首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java简单helloworld AES加密解密

Java简单helloworld AES加密解密
EN

Stack Overflow用户
提问于 2015-02-13 19:00:26
回答 3查看 1.8K关注 0票数 1

我从另一个人那里得到了一个代码片段,所以我对它进行了一些质疑和修改,但我似乎无法让它工作起来。有人能找出原因吗?它目前正在打印[B@405e70bc或类似的值。我所要做的就是以加密的形式存储密码,只是为了让它远离好奇的眼睛,有更好的方法吗?

代码语言:javascript
复制
String secret = "1234567812345678";
Key key = new SecretKeySpec(secret.getBytes(), "AES");

// Encrypt
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedData = cipher.doFinal("helloworld".getBytes());

// Decrypt
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decryptedData = cipher.doFinal(encryptedData);
System.out.println(decryptedData.toString());
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-13 19:09:32

加密/解密逻辑没有什么问题。问题在于您在一个.toString()上调用byte []

请使用以下输出语句:

代码语言:javascript
复制
System.out.println(new String(decryptedData));

票数 0
EN

Stack Overflow用户

发布于 2015-02-13 19:08:05

谢谢亚历山大。

这起作用了

代码语言:javascript
复制
String secret = "1234567812345678";
Key key = new SecretKeySpec(secret.getBytes(), "AES");

// Encrypt
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedData = cipher.doFinal("helloworld".getBytes());

// Decrypt
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decryptedData = cipher.doFinal(encryptedData);
System.out.println(new String(decryptedData, "UTF-8"));
票数 0
EN

Stack Overflow用户

发布于 2015-02-13 19:55:19

请不要用这个来做任何重要的事情。标准的Java代码使用的是一个固定长度的分组密码,可以得到相同的加密字节数据。其结果是明文信息逐渐泄漏。

如果您希望您的代码更健壮,您应该查看密码块链接和初始化向量。modes.shtml

为了满足你的需要,这可能太过分了,但我想我应该提一下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28506782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档