Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字节数组如何用C#编码对AES的安全性有影响吗?_C#_Aes - Fatal编程技术网

字节数组如何用C#编码对AES的安全性有影响吗?

字节数组如何用C#编码对AES的安全性有影响吗?,c#,aes,C#,Aes,我有一个字节数组,使用AES加密,密码短语使用SHA-256加密。 一切都很完美,但我想知道最后一部分,我必须对加密后得到的字节数组进行编码。 对于最终结果的健壮性来说,字节数组是如何加密的,Base64,转换为十六进制值,还有什么其他的吗 从逻辑上讲,这并不重要,因为实际上没有那么多编码方法,而且大多数情况下使用了最明显的一种方法Base64。 但由于我对密码学不是很精通,我只想确定一下 以字节数组为例(以随机字节数组为例): 这在Base64中给出了一个可能的结果(随机结果,与上面的结果不匹

我有一个字节数组,使用AES加密,密码短语使用SHA-256加密。
一切都很完美,但我想知道最后一部分,我必须对加密后得到的字节数组进行编码。 对于最终结果的健壮性来说,字节数组是如何加密的,Base64,转换为十六进制值,还有什么其他的吗

从逻辑上讲,这并不重要,因为实际上没有那么多编码方法,而且大多数情况下使用了最明显的一种方法Base64。 但由于我对密码学不是很精通,我只想确定一下

以字节数组为例(以随机字节数组为例):

这在Base64中给出了一个可能的结果(随机结果,与上面的结果不匹配):

使用位转换器将其转换为十六进制值会得到(随机结果,与上面的不匹配):

将上述结果转换回相应的字节数组很简单,只有这样,硬部分才开始

对于最终结果的健壮性来说,字节数组是如何加密的,Base64,转换为十六进制值,还有什么其他的吗

不,一点也不。只要您以无损格式(base64和hex都是无损格式)对其进行编码,就可以了。不要使用像
Encoding.ASCII.GetString(…)
这样的东西-这将是有损的和不合适的。(对于此任务,根本不要使用
编码
。)


问问你自己,你是否可以反转你的编码,回到原来的字节——如果可以的话,你就没事了。(假设十六进制和base64正确实现,也是如此。)

这样看。密码必须产生密文,在不知道密钥的情况下(实际上)不可能从密文中获得纯文本:

C=E(K,M) // K is key, M message
现在,你拥有的是密文。不管你是用Base64还是其他什么东西来编码,这都无关紧要,因为密码在产生密文时已经起到了作用。之后你可以用它做任何事情-密码在产生密码文本时已经完成了它的工作,它告诉你如果你不使用原始密钥,就不可能检索纯文本


因此,无论您以后做什么,例如如何对密码文本进行编码/解码,都应该无关紧要。

这与AES或安全性无关,但可以编辑成一个更一般的问题,如“如何将字节数组表示为字符串?”。这个问题已经存在很多次了,“我必须编码字节数组的最后一部分”-首先,确保这个“最后一部分”是必需的。许多人似乎本能地添加一个步骤来生成一个
字符串,而不是在得到字节数组时停止。如果您不需要字符串,请不要做任何进一步的操作。请对每个问题提出一个问题,并在提出新问题之前阅读。回复:编辑。请参阅:“密码系统应该是安全的,即使系统的所有内容(除了密钥)都是公共知识。”我向CodeCaster道歉,你是对的。我不应该只添加额外的后续问题,但添加另一个问题似乎很愚蠢,因为它最终与我最初的问题有关。另外,在我的问题得到回答之前,我把它看作是加密的一部分,因为我不知道有什么更好的,或者至少我不完全确定,所以我提出了我的问题。哇,谢谢你的快速回复。添加了关于AES密码最终结果的最后一个附加问题。@reaper_unique:这是一个完全独立的问题,关于安全性而不是可靠性。请在另一个帖子中提问。感谢您的进一步澄清。现在我不知道该把支票给谁。。。乔恩跑得更快,但我不知道他已经是大师了也许我应该把它给那些不幸的人?乔恩,是的。你至少可以得到一个:)
ou+yUEkilfrGIF3HBH08vu8A==
A2EBCA1945E8BC920532F068D27BAEF1
C=E(K,M) // K is key, M message