当前位置: 首页 > 面试题库 >

在Android和Java中加密/解密字符串不同的值

葛烨
2023-03-14
问题内容

我正在使用此代码在Java和Android中加密和解密某些字符串,并且在每个系统中,我得到一个不同的值。

我使用的代码来自http://www.androidsnippets.com/encryptdecrypt-
strings
(我不会粘贴它,因为它很大)。

例如,在Android中用于加密“ aa”的代码如下:1C6BD31C57F42ACFD0EDD2DD5B7A92CA

和与Java中的种子具有相同键的完全相同的String,我得到:61FAD1203B7AC92AD9345771AA273DA5

任何想法?

提前致谢!


问题答案:

这只是我的猜测,但我认为原因是您的关键推导。我不是真正的Java开发人员,因此我可能无法正确理解代码。

加密和解密时,此代码始终调用getRawKey()。getRawKey()看起来像需要一个称为种子或您的共享机密的东西,并用它来计算新的随机密钥来进行实际的加密/解密。

SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
    sr.setSeed(seed);
    kgen.init(128, sr); // 192 and 256 bits may not be available
    SecretKey skey = kgen.generateKey();

根据在这里找到的Java文档,setSeed()“对这个随机对象进行加密。
给定的种子补充而不是替换 现有的种子。”

我的猜测是,RNG的初始状态在每个系统/平台上都不同,因此可以为您提供不同的结果。您应该将密钥派生修正为更标准,更一致的内容,或者使用已经建立的加密系统,例如Bouncy
Castle库中的PGP。



 类似资料:
  • 问题内容: 我是密码学的新手。我希望学习如何在文件中加密和解密文本……当我在net中引用相关文章时。我怀疑对同一文本进行多次加密后,单个文本的加密文本是否会相同?谁能解决我的疑问? 问题答案: 这是使用该类的示例:

  • 我知道有几个与此相关的问题,但是大多数答案都提供了.NET4.0及以上版本的解决方案。对于我的用途,我必须以.NET3.5为目标。我想简单地加密和解密一个字符串存储在一个文件中,所讨论的文本不是敏感的用户/个人信息。

  • 我感兴趣的是构建一个个人使用的小应用程序,它将使用JavaScript在客户端加密和解密信息。加密的信息将存储在服务器上的数据库中,但不会存储解密的版本。 它不一定要是超级duper安全的,但我想使用一个当前未中断的算法。 理想情况下我可以做一些 生成编码字符串,以及类似于 以后再解码。 到目前为止,我已经看到了以下内容:http://bitwiseshiftleft.github.io/sjcl

  • 问题内容: 我正在尝试实施PKI。我想在Java中使用RSA而不使用弹性城堡来加密大字符串。我得到的问题是数据不得超过117个字节。我尝试寻找失败的解决方案。我是这种加密的新手。请提供一个大字符串作为示例来帮助我并进行解释。 问题答案: 一次不能使用超过128个字节的RSA加密解密。您必须拆分数据并在循环中进行处理,几乎可以随时将字节写入String / Array。如果您唯一的问题是数据大小,那

  • 所以我使用下面的代码来加密/解密可以存储在设备首选项中的字符串值,但我知道需要添加一个加密/解密ArrayList的方法,该方法也可以存储在首选项中(所以我猜加密需要将arraylist转换为字符串,然后解密需要将该字符串转换回arraylist)。由于我对Android/Java非常陌生,因此我很难弄清楚如何做到这一点,因此任何帮助都将不胜感激。

  • 问题内容: 我需要一种快速简单的方法来 加密/解密 字符串 数据的“很多” 。我尝试了 jasypt, 但在我的 Android 手机上崩溃了。我大约有 2000条记录 (字符串)。 还有其他方法吗?我不需要极高的安全性,它需要 快速 ! 问题答案: Java-从配置文件加密/解密用户名和密码 链接上方的代码