SHA-1(安全哈希算法实现)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SHA-1(安全哈希算法实现)
如题,不知道sha-1的自己百度吧。
1 #include
2 #include
3 #include
4usingnamespace std;
5
6constint NUM = 8; //一个字由32比特(或者8个16进制数) 7constint BIT = 512; //消息认证码要以512比特一组
8
9//字常量
10string H0 = "67452301";
11string H1 = "EFCDAB89";
12string H2 = "98BADCFE";
13string H3 = "10325476";
14string H4 = "C3D2E1F0";
15
16//定义SHA1(安全哈希算法)类
17class SHA1
18 {
19public:
20//将一个字符串形式的字转化为vector数组
21 vector
22
23//将vector转化为string字符串形式
24string num_into_message(vector
25
26//两个字X和Y的逻辑"和"
27 vector
29//两个字X和Y的逻辑"或"
30 vector
32//两个字X和Y的逻辑"异或"
33 vector
35//两个字X和Y的逻辑"补"
36 vector
37
38//两个字X和Y的摸2^32整数加
39 vector
41//将字X循环左移s个位置
42 vector
43
44//SHA-1的填充方案,我们设定msg由ASCII码组成
45 vector
46
47//将SHA-1压成以字为单位
48 vector
49
50//定义ft函数,每个ft函数都有B,C,D三个字作为输入,并产生一个字作为输出
51 vector
D);
52
53//定义字常数K
54 vector
55
56//开始进行SHA-1(安全Hash算法)的加密
57 vector
58
59 };
60
61//将vector转化为string字符串形式
62string SHA1::num_into_message(vector
63 {
64int i;
65string msg = "";
66for(i = 0;i < A.size();i++)
67 {
68if(A[i] >= 0&& A[i] <= 9)
69 msg += '0' + A[i];
70elseif(A[i] >= 10&& A[i] <= 15)
71 msg += 'A' + (A[i] - 10);
72 }
73return msg;
74 }
75
76//将一个字符串形式的字转化为vector数组
77 vector
78 {
79int i;
80 vector
81for(i = 0;i < NUM;i++)
82 {
83if(word[i] >= '0'&& word[i] <= '9')
84 {
85 result[i] = word[i] - '0';
86 }
87elseif(word[i] >= 'A'&& word[i] <= 'F')
88 {
89 result[i] = 10 + word[i] - 'A';
90 }
91 }
92return result;
93 }
94
95//两个字X和Y的逻辑"和"
96 vector
97 {
98 vector
99int i;
100for(i = 0;i < NUM;i++)
101 {
102 result[i] = A[i] & B[i];
103 }
104return result;
105 }
106
107//两个字X和Y的逻辑"或"
108 vector
110 vector
111int i;
112for(i = 0;i < NUM;i++)
113 {
114 result[i] = A[i] | B[i];
115 }
116return result;
117 }
118
119//两个字X和Y的逻辑"异或"
120 vector
122 vector
123int i;
124for(i = 0;i < NUM;i++)
125 {