1. MD5(Message Digest Algorithm) 암호화 알고리즘
은 암호화만 가능하고 복호화는 불가능한 단방향 암호화 알고리즘입니다. 예
/** * MD5简单加密 * @param content 加密内容 * @return String */ public static String md5Encrypt(final String content) { MessageDigest md5 = null; try { md5 = MessageDigest.getInstance(ALGORITHM_MD5); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } // md5.update(text.getBytes()); //digest()最后返回md5 hash值,返回值为8位字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符 //BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值 BigInteger digest = new BigInteger(md5.digest(content.getBytes())); //32位 return digest.toString(16); }
2는 일반적으로 암호화/복호화용 BASE64입니다. 바이너리 데이터 암호화에 사용됨(예:
/** * base64加密 * @param content 待加密内容 * @return byte[] */ public static byte[] base64Encrypt(final String content) { return Base64.getEncoder().encode(content.getBytes()); } /** * base64解密 * @param encoderContent 已加密内容 * @return byte[] */ public static byte[] base64Decrypt(final byte[] encoderContent) { return Base64.getDecoder().decode(encoderContent); }
3, DES(Data Encryption Standard) 대칭 암호화/복호화
Data Encryption Standard 알고리즘), BASE64와의 가장 분명한 차이점은 암호화에 사용되는 작동 키가 있다는 것입니다. , 는 복호화에도 사용되며, 키는 최소 8비트 길이의 문자열이어야 합니다. 예:
/** * DES加密 * @param key 秘钥key * @param content 待加密内容 * @return byte[] */ public static byte[] DESEncrypt(final String key, final String content) { return processCipher(content.getBytes(), getSecretKey(key), Cipher.ENCRYPT_MODE , ALGORITHM_DES); } /** * DES解密 * @param key 秘钥key * @param encoderContent 已加密内容 * @return byte[] */ public static byte[] DESDecrypt(final String key, final byte[] encoderContent) { return processCipher(encoderContent, getSecretKey(key), Cipher.DECRYPT_MODE, ALGORITHM_DES); }
4, RSA 비대칭 암호화/복호화
비대칭 암호화 알고리즘의 대표적인 대표자입니다. 암호화 및 해독이 모두 가능합니다. DES와 같은 대칭 암호화 알고리즘과의 명백한 차이점은 암호화와 복호화에 사용되는 키가 다르다는 것입니다. RSA 알고리즘을 사용하면 키가 충분히 길면(일반적으로 1024비트 필요) 암호화된 정보를 해독할 수 없습니다. 예
/** * RSA加密 * @param content 待加密内容 * @return byte[] */ public static byte[] RSAEncrypt(final String content) { return processCipher(content.getBytes(), keyPair.getPrivate(), Cipher.ENCRYPT_MODE , ALGORITHM_RSA); } /** * RSA解密 * @param encoderContent 已加密内容 * @return byte[] */ public static byte[] RSADecrypt(final byte[] encoderContent) { return processCipher(encoderContent, keyPair.getPublic(), Cipher.DECRYPT_MODE, ALGORITHM_RSA); }
5, SHA(Secure Hash Algorithm, 보안 해시 알고리즘)
암호 응용 분야의 디지털 서명 및 기타 중요한 도구는 전자상거래와 같은 정보 보안 분야에서 널리 사용됩니다. 예
/** * SHA加密 * @param content 待加密内容 * @return String */ public static String SHAEncrypt(final String content) { try { MessageDigest sha = MessageDigest.getInstance(ALGORITHM_SHA); byte[] sha_byte = sha.digest(content.getBytes()); StringBuffer hexValue = new StringBuffer(); for (byte b : sha_byte) { //将其中的每个字节转成十六进制字符串:byte类型的数据最高位是符号位,通过和0xff进行与操作,转换为int类型的正整数。 String toHexString = Integer.toHexString(b & 0xff); hexValue.append(toHexString.length() == 1 ? "0" + toHexString : toHexString); } return hexValue.toString(); // StringBuffer hexValue2 = new StringBuffer(); // for (int i = 0; i < sha_byte.length; i++) { // int val = ((int) sha_byte[i]) & 0xff; // if (val < 16) { // hexValue2.append("0"); // } // hexValue2.append(Integer.toHexString(val)); // } // return hexValue2.toString(); } catch (Exception e) { e.printStackTrace(); } return ""; }
6 , HMAC (해시 메시지 인증코드, 해시 메시지 인증코드)
키를 이용해 고정된 크기의 작은 데이터 블록, 즉 MAC을 생성하고 이를 메시지에 추가하여 전송합니다. 수신자는 인증 및 인증을 위해 발신자와 공유된 키를 사용합니다.
위 내용은 자바에서 암호화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!