首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AES加密256 ECB模式

AES加密256 ECB模式
EN

Stack Overflow用户
提问于 2016-03-04 02:18:37
回答 1查看 3.7K关注 0票数 2

我试图用密钥"hello"加密普通数据"01234567891234567890123456789012",但问题是加密的代码与网上参考资料不一样。

下面是我编写的android代码:

代码语言:javascript
复制
String smykey = "01234567891234567890123456789012";
String hellos = "hello";

SecretKeySpec key = new SecretKeySpec(smykey.getBytes(), "AES");

Cipher cipher =  Cipher.getInstance("AES");//("AES/ECB/PKCS7Padding");//("ECB");//("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);

byte[] encrypted = cipher.doFinal(hellos.getBytes());

代码产生,

代码语言:javascript
复制
android: 0x25 0x66...0x2d 0x87 (32 bytes)
ref:     0xa3 0xef...0x68 0x9f (16 bytes)

这个Android代码怎么了?我很感激你的帮助?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-04 02:51:35

在线引用正在做一些不同的事情,Android代码生成正确的加密数据。

数据hellos不是块大小的倍数(16字节),因此必须指定填充(PKCS#7)。

安卓系统使用的是PKCS#7填充,25669d21 dfd0fd6f cfef6cce 4ef12d87是使用256位键、欧洲央行模式和PKCS#7填充的正确结果。

用UTF-8编码将smykeyhellos转换为数据.

这是一个罕见的情况下,欧洲央行模式是使用,它是不安全的,使用CBC模式与随机iv (将iv与加密的数据)。解密时不要返回填充错误。

使用HMAC或更好的密钥扩展函数(如PBKDF2 )安全地将字符串密码用于安全加密密钥。直接使用字符串作为密钥是不安全的。

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

https://stackoverflow.com/questions/35786839

复制
相关文章

相似问题

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