>Java >Java베이스 >자바에서 암호화하는 방법

자바에서 암호화하는 방법

尚
원래의
2019-12-05 15:34:234428검색

자바에서 암호화하는 방법

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.