【问题标题】:How to resolve error while implementing DES encrypt/decrypt in asp.net?在 asp.net 中实现 DES 加密/解密时如何解决错误?
【发布时间】:2011-09-16 05:16:34
【问题描述】:

我正在尝试通过给定链接在 asp.net 应用程序中实现 DES 加密:

DES encrypt/decrypt

根据给定的代码,它工作正常,但如果我在字节变量中再添加一个字符,它会抛出异常

static byte[] bytes = ASCIIEncoding.ASCII.GetBytes("ZeroCool"); //Working fine
static byte[] bytes = ASCIIEncoding.ASCII.GetBytes("ZeroCoola"); //throwing exception

有人知道如何解决这个问题吗?

DES 加密有 8 个字符的限制吗?

谢谢

【问题讨论】:

    标签: asp.net encryption encryption-symmetric


    【解决方案1】:

    DES 支持 56 位密钥,因此您不能添加另一个密钥。实际上 56 位 = 7 字节,所以我认为 "Zerocool" 可以工作,因为所有字符都是标准 ASCII 字符,每个字符只占用 7 位。

    话说回来……

    1. DES 是一个非常古老的密码。现代家用计算机可以轻松破解 56 位密钥。您应该使用支持较大密钥的密码,例如 AES。

    2. 我在文末读到:

    使用DES,你可以加密或解密用户的密码或其他东西,如果你愿意,你可以钻研算法。

    这让我很担心。永远不应加密密码。仅凭那句话,我会认为整篇文章毫无用处。

    【讨论】:

    • 只是一个兴趣问题,您对 Triple des 的看法是什么?
    【解决方案2】:

    行:

    static byte[] bytes = ASCIIEncoding.ASCII.GetBytes("ZeroCool");

    不是您要加密的字符串的字节数组,它是加密过程的密钥。

    它与初始化向量 (IV) 一起用于设置加密。

    writer.Write(originalString);

    是查询加密输出时应该查看的位置。

    【讨论】:

    • 即密钥长度不应超过 8 个字符。我说的对吗?
    • @Sukhi:几乎是对的。 DES 采用 56 位密钥加上 8 个奇偶校验位(被忽略)。这给出了 56 + 8 = 64 位 = 8 个字节。 DES 现在已过时,请改用 AES,除非您使用 DES 与旧代码兼容。
    猜你喜欢
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多