@@ -28,7 +28,7 @@ internal sealed class Sm4
2828 /// <returns>转换后的长整型值</returns>
2929 private long GET_ULONG_BE ( byte [ ] b , int i )
3030 {
31- long n = 0 ;
31+ long n ;
3232 if ( ForJavascript )
3333 {
3434 n = ( b [ i ] & 0xff ) << 24 | ( ( b [ i + 1 ] & 0xff ) << 16 ) | ( ( b [ i + 2 ] & 0xff ) << 8 ) | ( b [ i + 3 ] & 0xff ) & 0xff ;
@@ -90,7 +90,7 @@ private static void Swap(long[] sk, int i)
9090 /// <summary>
9191 /// SM4算法使用的S盒
9292 /// </summary>
93- private byte [ ] SboxTable = new byte [ ]
93+ private readonly byte [ ] _sboxTable = new byte [ ]
9494 {
9595 0xd6 , 0x90 , 0xe9 , 0xfe , 0xcc , 0xe1 , 0x3d , 0xb7 ,
9696 0x16 , 0xb6 , 0x14 , 0xc2 , 0x28 , 0xfb , 0x2c , 0x05 ,
@@ -129,7 +129,7 @@ private static void Swap(long[] sk, int i)
129129 /// <summary>
130130 /// SM4算法系统参数FK
131131 /// </summary>
132- public uint [ ] FK =
132+ public readonly uint [ ] Fk =
133133 {
134134 0xa3b1bac6 ,
135135 0x56aa3350 ,
@@ -140,7 +140,7 @@ private static void Swap(long[] sk, int i)
140140 /// <summary>
141141 /// SM4算法固定参数CK
142142 /// </summary>
143- public uint [ ] CK =
143+ public readonly uint [ ] Ck =
144144 {
145145 0x00070e15 , 0x1c232a31 , 0x383f464d , 0x545b6269 ,
146146 0x70777e85 , 0x8c939aa1 , 0xa8afb6bd , 0xc4cbd2d9 ,
@@ -160,7 +160,7 @@ private static void Swap(long[] sk, int i)
160160 private byte Sm4Sbox ( byte inch )
161161 {
162162 int i = inch & 0xFF ;
163- byte retVal = SboxTable [ i ] ;
163+ byte retVal = _sboxTable [ i ] ;
164164 return retVal ;
165165 }
166166
@@ -219,25 +219,25 @@ private long Sm4CalciRk(long ka)
219219 /// <summary>
220220 /// 密钥扩展
221221 /// </summary>
222- /// <param name="SK ">轮密钥数组</param>
222+ /// <param name="sk ">轮密钥数组</param>
223223 /// <param name="key">初始密钥</param>
224- private void Sm4_Setkey ( long [ ] SK , byte [ ] key )
224+ private void Sm4_Setkey ( long [ ] sk , byte [ ] key )
225225 {
226- long [ ] MK = new long [ 4 ] ;
226+ long [ ] mk = new long [ 4 ] ;
227227 long [ ] k = new long [ 36 ] ;
228228 int i = 0 ;
229- MK [ 0 ] = GET_ULONG_BE ( key , 0 ) ;
230- MK [ 1 ] = GET_ULONG_BE ( key , 4 ) ;
231- MK [ 2 ] = GET_ULONG_BE ( key , 8 ) ;
232- MK [ 3 ] = GET_ULONG_BE ( key , 12 ) ;
233- k [ 0 ] = MK [ 0 ] ^ ( long ) FK [ 0 ] ;
234- k [ 1 ] = MK [ 1 ] ^ ( long ) FK [ 1 ] ;
235- k [ 2 ] = MK [ 2 ] ^ ( long ) FK [ 2 ] ;
236- k [ 3 ] = MK [ 3 ] ^ ( long ) FK [ 3 ] ;
229+ mk [ 0 ] = GET_ULONG_BE ( key , 0 ) ;
230+ mk [ 1 ] = GET_ULONG_BE ( key , 4 ) ;
231+ mk [ 2 ] = GET_ULONG_BE ( key , 8 ) ;
232+ mk [ 3 ] = GET_ULONG_BE ( key , 12 ) ;
233+ k [ 0 ] = mk [ 0 ] ^ Fk [ 0 ] ;
234+ k [ 1 ] = mk [ 1 ] ^ Fk [ 1 ] ;
235+ k [ 2 ] = mk [ 2 ] ^ Fk [ 2 ] ;
236+ k [ 3 ] = mk [ 3 ] ^ Fk [ 3 ] ;
237237 for ( ; i < 32 ; i ++ )
238238 {
239- k [ ( i + 4 ) ] = ( k [ i ] ^ Sm4CalciRk ( k [ ( i + 1 ) ] ^ k [ ( i + 2 ) ] ^ k [ ( i + 3 ) ] ^ ( long ) CK [ i ] ) ) ;
240- SK [ i ] = k [ ( i + 4 ) ] ;
239+ k [ ( i + 4 ) ] = ( k [ i ] ^ Sm4CalciRk ( k [ ( i + 1 ) ] ^ k [ ( i + 2 ) ] ^ k [ ( i + 3 ) ] ^ Ck [ i ] ) ) ;
240+ sk [ i ] = k [ ( i + 4 ) ] ;
241241 }
242242 }
243243
@@ -376,7 +376,6 @@ public byte[] Sm4_crypt_cbc(Sm4Context ctx, byte[] iv, byte[] input)
376376 input = Padding ( input , Sm4Encrypt ) ;
377377 }
378378
379- int i = 0 ;
380379 int length = input . Length ;
381380 byte [ ] bins = new byte [ length ] ;
382381 Array . Copy ( input , 0 , bins , 0 , length ) ;
0 commit comments