首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对AES密码版本的困惑

对AES密码版本的困惑
EN

Stack Overflow用户
提问于 2014-08-16 23:51:00
回答 1查看 196关注 0票数 0

我正试图在安卓应用程序中实现AES256加密。数据来自加密的服务器,我一直在使用Android库JNCryptor对数据进行解密。它成功地做到了这一点,但速度非常慢。我想试试Facebook的隐匿库,因为它报告的加密和解密速度更快。我的第一个实现是用隐藏库从服务器解密一个字符串。当我试图将加密字符串的byte[]传递给decrypt函数时,就会出现问题。

代码语言:javascript
复制
ByteArrayInputStream bin = new ByteArrayInputStream(Base64.decode(encStr, Base64.DEFAULT));
    InputStream cryptoStream = null;
    try {
        cryptoStream = crypto.getCipherInputStream(bin, new Entity("test"));
...

造成崩溃的原因是,给定的cipher version (通过获取byte []的第一个字节找到)并不等于预期的隐藏cipher version数字1。

然后我查看了隐藏的加密部分,并看到这只是加密过程中设置的一个数字。

为了再次检查,我查看了JNCryptor源代码,看到它设置并查找密码版本号2和3。

我想我的问题是:密码版本号的意义是什么?我是否能够让隐藏库解密这些数据,或者它们只是以完全不同的方式加密?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-17 00:32:09

他们完全不相关。例如,隐藏似乎使用GCM加密模式(包括身份验证),RNCrypt在CBC模式中使用AES,而HMAC用于身份验证。此外,它使用密码和PBKDF2,而不是直接使用密钥(尽管像JNCryptor这样的实现可能包括直接使用密钥的快捷方式--谢谢邓肯)。

两者都是相对极简的专有加密格式,而且都使用AES。这就是他比较的终点。

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

https://stackoverflow.com/questions/25345075

复制
相关文章

相似问题

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