8
8
9
9
package ripemd160
10
10
11
+ import (
12
+ "math/bits"
13
+ )
14
+
11
15
// work buffer indices and roll amounts for one line
12
16
var _n = [80 ]uint {
13
17
0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ,
@@ -59,16 +63,16 @@ func _Block(md *digest, p []byte) int {
59
63
i := 0
60
64
for i < 16 {
61
65
alpha = a + (b ^ c ^ d ) + x [_n [i ]]
62
- s := _r [i ]
63
- alpha = (alpha << s | alpha >> ( 32 - s ) ) + e
64
- beta = c << 10 | c >> 22
66
+ s := int ( _r [i ])
67
+ alpha = bits . RotateLeft32 (alpha , s ) + e
68
+ beta = bits . RotateLeft32 ( c , 10 )
65
69
a , b , c , d , e = e , alpha , b , beta , d
66
70
67
71
// parallel line
68
72
alpha = aa + (bb ^ (cc | ^ dd )) + x [n_ [i ]] + 0x50a28be6
69
- s = r_ [i ]
70
- alpha = (alpha << s | alpha >> ( 32 - s ) ) + ee
71
- beta = cc << 10 | cc >> 22
73
+ s = int ( r_ [i ])
74
+ alpha = bits . RotateLeft32 (alpha , s ) + ee
75
+ beta = bits . RotateLeft32 ( cc , 10 )
72
76
aa , bb , cc , dd , ee = ee , alpha , bb , beta , dd
73
77
74
78
i ++
@@ -77,16 +81,16 @@ func _Block(md *digest, p []byte) int {
77
81
// round 2
78
82
for i < 32 {
79
83
alpha = a + (b & c | ^ b & d ) + x [_n [i ]] + 0x5a827999
80
- s := _r [i ]
81
- alpha = (alpha << s | alpha >> ( 32 - s ) ) + e
82
- beta = c << 10 | c >> 22
84
+ s := int ( _r [i ])
85
+ alpha = bits . RotateLeft32 (alpha , s ) + e
86
+ beta = bits . RotateLeft32 ( c , 10 )
83
87
a , b , c , d , e = e , alpha , b , beta , d
84
88
85
89
// parallel line
86
90
alpha = aa + (bb & dd | cc &^dd ) + x [n_ [i ]] + 0x5c4dd124
87
- s = r_ [i ]
88
- alpha = (alpha << s | alpha >> ( 32 - s ) ) + ee
89
- beta = cc << 10 | cc >> 22
91
+ s = int ( r_ [i ])
92
+ alpha = bits . RotateLeft32 (alpha , s ) + ee
93
+ beta = bits . RotateLeft32 ( cc , 10 )
90
94
aa , bb , cc , dd , ee = ee , alpha , bb , beta , dd
91
95
92
96
i ++
@@ -95,16 +99,16 @@ func _Block(md *digest, p []byte) int {
95
99
// round 3
96
100
for i < 48 {
97
101
alpha = a + (b | ^ c ^ d ) + x [_n [i ]] + 0x6ed9eba1
98
- s := _r [i ]
99
- alpha = (alpha << s | alpha >> ( 32 - s ) ) + e
100
- beta = c << 10 | c >> 22
102
+ s := int ( _r [i ])
103
+ alpha = bits . RotateLeft32 (alpha , s ) + e
104
+ beta = bits . RotateLeft32 ( c , 10 )
101
105
a , b , c , d , e = e , alpha , b , beta , d
102
106
103
107
// parallel line
104
108
alpha = aa + (bb | ^ cc ^ dd ) + x [n_ [i ]] + 0x6d703ef3
105
- s = r_ [i ]
106
- alpha = (alpha << s | alpha >> ( 32 - s ) ) + ee
107
- beta = cc << 10 | cc >> 22
109
+ s = int ( r_ [i ])
110
+ alpha = bits . RotateLeft32 (alpha , s ) + ee
111
+ beta = bits . RotateLeft32 ( cc , 10 )
108
112
aa , bb , cc , dd , ee = ee , alpha , bb , beta , dd
109
113
110
114
i ++
@@ -113,16 +117,16 @@ func _Block(md *digest, p []byte) int {
113
117
// round 4
114
118
for i < 64 {
115
119
alpha = a + (b & d | c &^d ) + x [_n [i ]] + 0x8f1bbcdc
116
- s := _r [i ]
117
- alpha = (alpha << s | alpha >> ( 32 - s ) ) + e
118
- beta = c << 10 | c >> 22
120
+ s := int ( _r [i ])
121
+ alpha = bits . RotateLeft32 (alpha , s ) + e
122
+ beta = bits . RotateLeft32 ( c , 10 )
119
123
a , b , c , d , e = e , alpha , b , beta , d
120
124
121
125
// parallel line
122
126
alpha = aa + (bb & cc | ^ bb & dd ) + x [n_ [i ]] + 0x7a6d76e9
123
- s = r_ [i ]
124
- alpha = (alpha << s | alpha >> ( 32 - s ) ) + ee
125
- beta = cc << 10 | cc >> 22
127
+ s = int ( r_ [i ])
128
+ alpha = bits . RotateLeft32 (alpha , s ) + ee
129
+ beta = bits . RotateLeft32 ( cc , 10 )
126
130
aa , bb , cc , dd , ee = ee , alpha , bb , beta , dd
127
131
128
132
i ++
@@ -131,16 +135,16 @@ func _Block(md *digest, p []byte) int {
131
135
// round 5
132
136
for i < 80 {
133
137
alpha = a + (b ^ (c | ^ d )) + x [_n [i ]] + 0xa953fd4e
134
- s := _r [i ]
135
- alpha = (alpha << s | alpha >> ( 32 - s ) ) + e
136
- beta = c << 10 | c >> 22
138
+ s := int ( _r [i ])
139
+ alpha = bits . RotateLeft32 (alpha , s ) + e
140
+ beta = bits . RotateLeft32 ( c , 10 )
137
141
a , b , c , d , e = e , alpha , b , beta , d
138
142
139
143
// parallel line
140
144
alpha = aa + (bb ^ cc ^ dd ) + x [n_ [i ]]
141
- s = r_ [i ]
142
- alpha = (alpha << s | alpha >> ( 32 - s ) ) + ee
143
- beta = cc << 10 | cc >> 22
145
+ s = int ( r_ [i ])
146
+ alpha = bits . RotateLeft32 (alpha , s ) + ee
147
+ beta = bits . RotateLeft32 ( cc , 10 )
144
148
aa , bb , cc , dd , ee = ee , alpha , bb , beta , dd
145
149
146
150
i ++
0 commit comments