【发布时间】:2016-04-17 23:38:35
【问题描述】:
我需要编写一个用特殊密钥加密字符的代码。 我必须使用自己的密钥和掩码进行异或运算。 但我对此的理解和实施存在问题。
首先,我创建了自己的密钥,用于加密字符。这个密钥是 e.q 数字:123456789。在二进制表示中,数字 123456789 是:00010101 11001101 01011011 00000111。我将其划分为 4 x 8 位,因为我输入了一种 char。 我也必须用它来用掩码加密我的字符。我的掩码是 0xFF,因为它会重置最旧的位,而最年轻的 8 位则留给进行 XOR 操作。 这意味着当我输入 char "a" 时,它应该使用此密钥和带有 XOR 操作的掩码对其进行加密。
更重要的是,我想检查我的编译器在 key[0] 位置显示的内容。这意味着我有“int key[0] = {00000111}”,因为我认为它应该将数字 7 显示为二进制数,但编译器显示数字 73。为什么?
如果有人能帮我解决这个问题,我将不胜感激。
这是我的代码:
#include <iostream>
using namespace std;
void encryption(char chars[], const int size);
int main() {
const int size1 = 4;
char chars1[size1];
unsigned int keys = 123456789;
int key[] = {00000111}; // why does it show number 73 instead of 7 ?
cout << "Enter a char to encrypt: " << endl;
cin >> chars1[0];
return 0; }
void encryption(char chars[], const int size) {
unsigned int keys = 123456789;
unsigned int key[] = {00010101, 11001101, 01011011, 00000111};
unsigned int mask = 0xFF;
int temp[4] = {0};
temp[0] = chars[0] ^ (keys & mask);
temp[1] = chars[0] ^ ((keys >> 8) & mask);
temp[2] = chars[0] ^ ((keys >> 16) & mask);
temp[3] = chars[0] ^ ((keys >> 24) & mask);
}
【问题讨论】:
-
@user4581301 是的,当然。但我只是一个初学者,在我的课堂上我们有一个简单的例子来使用自己的密钥。谢谢你的回答。
标签: c++ encryption codeblocks