血常规cbc模式:128位模式的 CBC加密块大小(aes cbc block size)

我有一个要求,使用 AES 与 CBC 在 128 位加密字符串

我需要设置块大小是什么?

 var iv = "0000000000000000000000000000000000000000000000000000000000000000".ToByteArray();
 using (Aes myAes = Aes.Create())
 {
     myAes.Mode = CipherMode.CBC;
     // Encrypt the string to an array of bytes.
     byte[] encrypted = EncryptStringToBytes_Aes(xml, myAes.Key, iv);
     // Decrypt the bytes to a string.
     string roundtrip = DecryptStringFromBytes_Aes(encrypted, myAes.Key, iv);
     //Display the original data and the decrypted data.
     Console.WriteLine("Original:   {0}", xml);
     Console.WriteLine("Round Trip: {0}", roundtrip);
 }

奇怪的是,我的规格似乎无法满足 IV

无论如何,我都没有告诉对方 IV 是什么,所以我想我将不得不使用一串 0,我认为它是 64 个字符长,所以我使用了上面的代码

有人可以帮忙吗?

0

抛开任何和所有的安全概念一秒钟,发送密钥 / IV 值或将它们初始化为静态值...

您的代码似乎来自 Microsoft 的AES documentation,那么为什么不坚持使用生成的 IV 值呢?

如果您绝对想自己设置 IV(不寒而栗),则需要将其设置为 128 位值或 16 个字节。我不知道您的String.ToByteArray()代码的确切作用,但是如果我冒险猜测,它可能会使用 UTF8 或 ASCII 等编码将 String 转换为字节。在任何一种情况下,您的 IV 数组的长度都将远远超过 16 个字节。只需使用1

然而,既然你提到我强烈建议你仔细检查密钥 / IV 是如何产生或传达给另一方的。

0

IV 不是键。IV 代表初始化向量https://en..org/wiki/Initialization_vector。要生成 IV,您可以使用:https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.aescryptoserviceprovider.generateiv?view=net-5.0

但是你的代码已经生成了 IV 和 KEY。你的代码生成一个 256 位的密钥,你想要一个 128 位的密钥。你可以通过添加

myAes.KeySize = 128;right after theAes.Create().

所以应用到example你可能从开始:

string original = "Here is some data to encrypt!";
            // Create a new instance of the Aes
            // class.  This generates a new key and initialization
            // vector (IV).
            using (Aes myAes = Aes.Create())
            {
                myAes.KeySize = 128; //After this line key size will go to 16 bytes.
                // Encrypt the string to an array of bytes.
                byte[] encrypted = EncryptStringToBytes_Aes(original, myAes.Key, myAes.IV);
                // Decrypt the bytes to a string.
                string roundtrip = DecryptStringFromBytes_Aes(encrypted, myAes.Key, myAes.IV);
                //Display the original data and the decrypted data.
                Console.WriteLine("Original:   {0}", original);
                Console.WriteLine("Round Trip: {0}", roundtrip);
            }

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(529)
C语言简单图形代码:如何在 C#中绘制简单的图形(graphics in c#)
上一篇
Condition单数复数区别:rails单数资源还是复数(still life plural)
下一篇

相关推荐

  • comeandgetyourlove音乐爱就在你身边

    Come and Get Your Love是一首热门的歌曲,由美国摇滚乐队Redbone演唱。这首歌曲于1974年发行,被收录在他们的专辑《Wovoka》中。歌曲以放克曲风为主,旋律活泼,曲调悠扬,歌词朗朗上口,深受歌迷喜爱。…

    2023-06-29 07:47:31
    0 66 85
  • codeblocks无法编译运行:Codeblocks无法编译运行的解决方案

    codeblocks无法编译运行的原因可能有很多,下面以一段简单的C语言代码为例,来说明codeblocks无法编译运行的情况。…

    2023-07-11 08:01:55
    0 53 30
  • gitlab ci 自动化部署:使用 Gitlab CI 自动化部署提升开发效率

    GitLab CI 自动化部署是一种基于 GitLab CI/CD 的自动化部署方案,可以实现快速、可靠的部署流程。它将代码提交、构建、测试、部署等步骤集成在一起,使得开发者可以更加轻松地完成部署工作。下面是一个示例 .gitlab-ci.yml 文件,可以帮助你实现 GitLab CI 自动化部署:…

    2023-05-20 05:45:38
    0 14 91
  • xl和xe汽车cvt:探索XL和XE汽车的CVT技术优势

    XL和XE汽车CVT是一种变速器,它使用液力变矩器代替传统的机械变速器,以达到更高的效率。它的工作原理是,当发动机输出功率时,液力变矩器就会将这些功率转换为液压能量,然后将能量传递到变速器的输出轴上,从而实现变速。…

    2023-05-16 07:36:03
    0 77 88
  • js添加css:This is a Title

    使用js添加css可以通过修改元素的style属性来实现,具体代码如下:…

    2023-05-27 12:30:24
    0 32 82
  • css 字符间距:### 世界上最美的地方

    示例示例CSS 字符间距是指在文本中的字符之间添加间距,以增强文本的可读性。它可以使文本更容易阅读,也可以使文本看起来更美观。代码示例:…

    2023-04-15 08:45:29
    0 81 39
  • git 删除commit记录:回滚Git Commit记录

    git删除commit记录可以使用git reset命令。使用方法:…

    2023-07-07 04:31:44
    0 58 24
  • java实现tcp:使用Java实现TCP网络编程

    TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。它使用三次握手来建立可靠的连接,并且在数据传输期间可以检测丢失的数据包并重新发送。…

    2023-01-31 10:33:14
    0 20 99

发表评论

登录 后才能评论

评论列表(2条)