【问题标题】:What encryption should be used in encoding and how does it affect key and initialisation vectors?在编码中应该使用什么加密以及它如何影响密钥和初始化向量?
【发布时间】:2010-07-09 11:04:38
【问题描述】:

我正在研究加密以及编码如何影响密钥和初始化向量的生成。

我正在使用TripleDESCryptoServiceProvider,它需要使用 ASCII 编码的 24 字节密钥和 8 字节初始化向量。如果我决定使用不同的编码,这将如何影响密钥和初始化向量的生成?

我应该使用哪种编码来代替 UTF8/16/32?

谢谢

【问题讨论】:

    标签: c# encryption encoding key initialization-vector


    【解决方案1】:

    加密参数与您选择的编码完全无关。加密参数总是以字节为单位定义的。编码涉及将字符转换为字节并将字节转换回字符。它们“冲突”的唯一地方是使用密码生成加密密钥。您应该使用专门为此设计的类,例如 Rfc2898DeriveBytes

    在大多数情况下,我看到程序员使用 ASCII 编码会更好地使用 UTF8 编码。 UTF8 编码对 ASCII 字符进行编码和解码的方式与 ASCII 编码完全相同,但它还可以正确有效地对 Unicode 的所有其余部分进行编码。如果遇到非 ASCII 字符时需要生成异常,请使用 ASCII 编码。

    【讨论】:

    • 有使用 Rfc2898DeriveBytes 的理由吗?一旦应用程序安装在客户端计算机上,我不打算更改初始化向量或密钥。
    【解决方案2】:

    我不是专家,但是 TripleDES 不再被认为足够安全。 Microsoft 的建议是使用 AES 256 位及以上。我认为文本编码不会影响加密强度,只会影响“纯文本”密钥和 IV 的长度。

    【讨论】:

    • TripleDES 没有什么不安全的地方。甚至没有人能够打破它。但是,在同等安全性方面,它比 AES 慢得多。
    • AES-128 是很多专家推荐的,没有什么比 AES-256 高的了。
    • 注明。谢谢你,加密不是我的专长。
    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多