【问题标题】:Need algorithm to protect string with password?需要算法来用密码保护字符串?
【发布时间】:2011-09-16 07:22:42
【问题描述】:

我正在寻找一种简单而快速的算法来加密/解密带有密码的字符串(长度约为 128 字节)。

有什么好的算法吗?

添加:自定义算法绝对可以。占用更少的内存-更好(就我而言)。没有额外的课程 - 完美。

【问题讨论】:

  • 简单、快速、安全。选择两个?好的,所以也许这不太准确......但如果您的唯一要求是“简单”和“快速”,我们 ROT13 或 XOR。或反向()。当然,你有比这更高的要求!
  • 如果字符串只有 128 字节长,为什么需要快速算法?
  • 2 Fimzy - 我选择简单和快速。我在主题中写过:-)
  • 2 Dave Webb,我想做几百万次迭代,它是为 OLTP 平台设计的。
  • 2 Flimzy:不好意思问,但是 - 你知道任何实现 XOR 的好库吗?

标签: java passwords password-protection


【解决方案1】:

AES AlgorithmImplementation

AES 是一个联邦标准 私钥或对称密码学。 它支持组合键和 块大小为 128、192 和 256。


IDEA - International Data Encryption Algorithm 怎么样?

IDEA 是专利名称和 通用块 加密算法,它允许 的有效保护 针对传输和存储的数据 第三方未经授权的访问。

查看实现:How to implement IDEA?

【讨论】:

  • 2 saugok:一票赞成指向 AES。我知道,但这不适用于我的情况,因为我需要非常快速的算法。重点是简单性和速度,而不是安全性。
  • 但 AES 未能满足简单快速的算法要求
【解决方案2】:

AES 或 3DES 是相当“标准”的对称密钥加密。河豚是另一种。

例如,检查 http://java.sun.com/developer/technicalArticles/Security/AES/AES_v1.html 是否将 AES 与 Java 结合使用。

旁注:如果这是为了保护密码之类的东西,您应该真正使用单向散列方法(如 MD5 或类似方法)。除非您绝对必须能够解密文本,否则单向散列会更安全。例如,当将密码存储在数据库中时,您将对密码进行哈希处理(使用 MD5 之类的东西)并存储它。然后通过对用户输入进行哈希处理并将其与存储在数据库中的哈希值进行比较来验证登录。

【讨论】:

  • 2 爸爸,谢谢你的回答,但不是我的情况。
【解决方案3】:

Encryption and DecryptionJava Crypto!

【讨论】:

    【解决方案4】:

    这是一个简单的加密/解密方法。它很弱,所以我提出它是为了教育目的

        public static String encDec(String input, String password) {
    
          byte[] in = input.getBytes();
          byte[] key = password.getBytes();
          byte[] result = new byte[in.length];
          int k = 0;
          for (int i = 0; i < in.length; i++) {
             result[i] = (byte)(in[i] ^ key[k]);
             k++;
             if (k == key.length) 
               k=0;
          }
    
          return new String(result);
        }
    

    它只是简单地将短语的字节与密码的字节进行异或。可以使用相同的方法进行加密和解密。顺便说一句,对于加密分析师来说这不是什么大挑战,但如果您只需要混淆一些数据,这是一个简单的开始。

    为了让它稍微好一点:不要传递一个密码字符串,而是一个带有随机值的字节数组。但是您想要一个带密码的方法,这就是我以 那种方式 实现它的原因;)

    【讨论】:

    • 谢谢!我真的需要混淆一些数据。没有其他的。再次感谢你:)
    • 如果您选择空格作为密码,小写文本将变为大写。
    • (这是否决了长期预期的AES 以下的所有内容都是错误答案 反射?如果,亲爱的投反对票者,请研究我的警告回答,如果没有请发表评论)
    【解决方案5】:

    有 Tiny 加密算法 (http://en.wikipedia.org/wiki/XXTEA)。

    它非常简单和快速(对于加密算法)并且有 Java 实现。

    【讨论】:

      猜你喜欢
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 2012-05-12
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      相关资源
      最近更新 更多