有没有大神给份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等,可能需要查阅相关文档以获取正确的实现方法。
解决 无用评论 打赏 举报