Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
Encryption 如何对明文ASCII或十六进制编码?_Encryption_Aes_Cbc Mode - Fatal编程技术网

Encryption 如何对明文ASCII或十六进制编码?

Encryption 如何对明文ASCII或十六进制编码?,encryption,aes,cbc-mode,Encryption,Aes,Cbc Mode,如果我有一个十六进制的给定密文(来自CBC模式,带有随机IV和AES)及其ASCII编码的明文,我需要在加密之前将ASCII明文编码为十六进制吗 明文是“付给鲍勃100美元” ASCII080 097 121 032 066 111 098 032 036 049 048 048 我得到了密码文本20814804c1767293b99f1d9cab3bc3e7 ac1e37bfb15599e5f40eef805488281d不,您不必创建明文的十六进制表示形式 您将从一个文本开始,它很可能是应用

如果我有一个十六进制的给定密文(来自CBC模式,带有随机IV和AES)及其ASCII编码的明文,我需要在加密之前将ASCII明文编码为十六进制吗

明文是“付给鲍勃100美元”
ASCII
080 097 121 032 066 111 098 032 036 049 048 048


我得到了密码文本
20814804c1767293b99f1d9cab3bc3e7 ac1e37bfb15599e5f40eef805488281d

不,您不必创建明文的十六进制表示形式

您将从一个文本开始,它很可能是应用程序中的一个字符串。此字符串可能还没有默认的字符编码,如ASCII或UTF-16LE。如果没有默认编码,则需要将明文编码为字节(也称为字节数组或八位字节字符串)。UTF-8是当今应用最广泛的字符编码

为了让这更有趣一点,大多数IDE和调试器在查看字节时都将其显示为十六进制。这只是内存中字节值的一种表示形式-字节在内存中不是以十六进制编码的,您只需将它们视为十六进制

现代密码采用明文字节并将其转换为密文字节。如果您得到一个字符串,那么API有一个默认的编码方法包含在算法中(例如,已知PHP会自动编码)。这是API的一部分,而不是密码本身


同样,如果密文不是自动编码的,那么您可能需要自己对字节进行编码。您可以使用十六进制(因为您可以很容易地看到密文的大小,所以调试更容易)或更高效的Base64编码。但是,只有在需要字符串而不是字节形式的密文时,才需要进行编码。您确实需要字符串的一个示例是XML,因为它是一种文本格式(其中密文通常位于
CDATA
部分)。

对于大多数(甚至可能是所有)实现,答案是
。实际上,您不会转换为
十六进制
,但字符串中的每个字符都应该转换为
字节
。这是一个纯文本
字符串
被转换成
字节数组
,但我想问你的问题是:目的是什么?加密明文以获得准确的密文?要做到这一点,你需要知道IV。为什么同时使用密文和明文还有其他目的吗?不清楚你在问什么。AES CBC在字节块上工作。它不在乎这些字节代表什么:十六进制数字或ASCII编码。因此,如果您正在谈论加密例程的输入,那么您不必对任何内容进行编码。谢谢您的回复!我有一个用于明文的CT,它是消息“Pay Bob$100”的ASCII编码。我需要计算消息“付给鲍勃500美元”的密码文本。我以为IV应该是密文的前16个字节(使用AES)?我只是弄不清楚我是先将“Pay Bob$100”直接编码成十六进制,还是将ASCII版本的明文编码成十六进制。那么,我应该把“付给鲍勃100美元”放在一个十六进制转换器里,还是把“080 097 121 032 066 111 098 032 036 049 048 048”放在一个十六进制转换器里。(字符串)->字符编码->(字节)->加密->(字节)->十六进制编码->(字符串)->“发送”->“接收”->(字符串)->十六进制解码->(字节)->解密->(字符串)。Coursera作业:)