使用 DES3 加密 3000 字节及更多

发布于 2025-01-08 08:21:40 字数 827 浏览 0 评论 0原文

我尝试使用 DES3 加密数据:

private byte[] EncryptKey(byte[] wrappedKey)
    {
        MemoryStream ms = new MemoryStream(wrappedKey);
        TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
        cryptoProvider.Key = transportKeyBytes; //key
        cryptoProvider.Padding = PaddingMode.None;
        cryptoProvider.Mode = CipherMode.ECB;

        CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateEncryptor(), CryptoStreamMode.Read);
        StreamReader sr = new StreamReader(cs);
        byte[] key = new Byte[wrappedKey.Length];
        cs.Read(key, 0, wrappedKey.Length);
        cs.Close();
        ms.Close();

        return key;
    }

但我收到错误消息:

Length of the data to encrypt is invalid.

可以加密的数据的最大大小是多少?

Im trying to encrypt data with DES3:

private byte[] EncryptKey(byte[] wrappedKey)
    {
        MemoryStream ms = new MemoryStream(wrappedKey);
        TripleDESCryptoServiceProvider cryptoProvider = new TripleDESCryptoServiceProvider();
        cryptoProvider.Key = transportKeyBytes; //key
        cryptoProvider.Padding = PaddingMode.None;
        cryptoProvider.Mode = CipherMode.ECB;

        CryptoStream cs = new CryptoStream(ms, cryptoProvider.CreateEncryptor(), CryptoStreamMode.Read);
        StreamReader sr = new StreamReader(cs);
        byte[] key = new Byte[wrappedKey.Length];
        cs.Read(key, 0, wrappedKey.Length);
        cs.Close();
        ms.Close();

        return key;
    }

But im getting error saying:

Length of the data to encrypt is invalid.

Whats the maximum size of the data can be encrypted?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无语# 2025-01-15 08:21:40

您没有使用任何填充。这可能是你的错误的原因。如果不添加任何填充,您只能加密确切数量的 8 字节块。对于 DES,将填充更改为 PKCS#5。

ECB 模式并不安全。请参阅维基百科了解(字面)说明。请改用 CBC 或 CTR 模式。

3DES 已过时。除非您必须使用它来与旧系统兼容,否则请使用 AES。

You are not using any padding. That is probably the cause of your error. By not adding any padding you are only able to encrypt an exact number of 8 byte blocks. Change the padding to PKCS#5 for DES.

ECB mode is not secure. See Wikipedia for a (literal) illustration. Use CBC or CTR mode instead.

3DES is obsolete. Unless you have to use it for compatibility with an old system use AES instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文