一条大河~ 2019-04-09 16:55 采纳率: 0%
浏览 356

有大神能给份des加解密的java代码没,最好是16进制密文的,找了不少都是base64的

有没有大神给份java的des加解密的代码,需要先把十进制明文密码转成16进制,补足16位之后再进行加密或解密操作,谢谢各位大神

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-08 19:57
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    public class DesCipher {
        private static final String KEY = "1234567890abcdef";
    
        public static void main(String[] args) throws NoSuchAlgorithmException {
            // 加密
            byte[] encrypted = encrypt("hello world", 1);
            System.out.println(new String(encrypted));
    
            // 解密
            byte[] decrypted = decrypt("dXNlcjE=", 1);
            System.out.println(new String(decrypted));
        }
    
        /**
         * 使用DES算法对字符串进行加密。
         *
         * @param str 待加密的字符串
         * @param key 加密使用的密钥
         * @return 加密后的字节数组
         */
        public static byte[] encrypt(String str, int len) {
            try {
                MessageDigest md = MessageDigest.getInstance("DES");
                byte[] keyBytes = new byte[len];
                for (int i = 0; i < len; i++) {
                    keyBytes[i] = (byte) KEY.charAt(i % KEY.length());
                }
                md.update(keyBytes);
    
                byte[] dataBytes = str.getBytes();
                md.update(dataBytes);
    
                return md.digest();
            } catch (NoSuchAlgorithmException e) {
                throw new RuntimeException(e);
            }
        }
    
        /**
         * 使用DES算法对字符串进行解密。
         *
         * @param str 待解密的字符串
         * @param key 解密使用的密钥
         * @return 解密后的字节数组
         */
        public static byte[] decrypt(byte[] str, int len) {
            try {
                MessageDigest md = MessageDigest.getInstance("DES");
                byte[] keyBytes = new byte[len];
                for (int i = 0; i < len; i++) {
                    keyBytes[i] = (byte) KEY.charAt(i % KEY.length());
                }
                md.update(keyBytes);
    
                byte[] dataBytes = str;
                md.update(dataBytes);
    
                return md.digest();
            } catch (NoSuchAlgorithmException e) {
                throw new RuntimeException(e);
            }
        }
    }
    

    这段代码使用了Java的MessageDigest类来实现DES算法。注意,这个例子中没有提供完整的DES算法实现细节,因为这超出了一个简单的示例的功能范围。

    如果你需要处理更复杂的DES算法,例如AES、RSA等,可能需要查阅相关文档以获取正确的实现方法。

    评论

报告相同问题?