• 大小: 8KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-05
  • 语言: Java
  • 标签: java  sm4  国密算法  

资源简介

国密算法SMS4的JAVA实现 该算法已经通过国密网站的标准数据进行对比,中间变量与结果均一致,完全正确。 SMS算法是一个分组算法。该算法的分组长度为 128 比特,密钥长度为 128 比特。加密算法与密钥扩展算法都采用 32 轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。

资源截图

代码片段和文件信息

package test;

import java.util.Arrays;

public class SMS4 {

private static final int ENCRYPT=1;
private static final int DECRYPT=0;
public static final int ROUND=32;
private static final int BLOCK=16;

private byte[] Sbox={
(byte) 0xd6(byte) 0x90(byte) 0xe9(byte) 0xfe(byte) 0xcc(byte) 0xe10x3d(byte) 0xb70x16(byte) 0xb60x14(byte) 0xc20x28(byte) 0xfb0x2c0x05
0x2b0x67(byte) 0x9a0x760x2a(byte) 0xbe0x04(byte) 0xc3(byte) 0xaa0x440x130x260x49(byte) 0x860x06(byte) 0x99
(byte) 0x9c0x420x50(byte) 0xf4(byte) 0x91(byte) 0xef(byte) 0x980x7a0x330x540x0b0x43(byte) 0xed(byte) 0xcf(byte) 0xac0x62
(byte) 0xe4(byte) 0xb30x1c(byte) 0xa9(byte) 0xc90x08(byte) 0xe8(byte) 0x95(byte) 0x80(byte) 0xdf(byte) 0x94(byte) 0xfa0x75(byte) 0x8f0x3f(byte) 0xa6
0x470x07(byte) 0xa7(byte) 0xfc(byte) 0xf30x730x17(byte) 0xba(byte) 0x830x590x3c0x19(byte) 0xe6(byte) 0x850x4f(byte) 0xa8
0x680x6b(byte) 0x81(byte) 0xb20x710x64(byte) 0xda(byte) 0x8b(byte) 0xf8(byte) 0xeb0x0f0x4b0x700x56(byte) 0x9d0x35
0x1e0x240x0e0x5e0x630x58(byte) 0xd1(byte) 0xa20x250x220x7c0x3b0x010x210x78(byte) 0x87
(byte) 0xd40x000x460x57(byte) 0x9f(byte) 0xd30x270x520x4c0x360x02(byte) 0xe7(byte) 0xa0(byte) 0xc4(byte) 0xc8(byte) 0x9e
(byte) 0xea(byte) 0xbf(byte) 0x8a(byte) 0xd20x40(byte) 0xc70x38(byte) 0xb5(byte) 0xa3(byte) 0xf7(byte) 0xf2(byte) 0xce(byte) 0xf90x610x15(byte) 0xa1
(byte) 0xe0(byte) 0xae0x5d(byte) 0xa4(byte) 0x9b0x340x1a0x55(byte) 0xad(byte) 0x930x320x30(byte) 0xf5(byte) 0x8c(byte) 0xb1(byte) 0xe3
0x1d(byte) 0xf6(byte) 0xe20x2e(byte) 0x820x66(byte) 0xca0x60(byte) 0xc00x290x23(byte) 0xab0x0d0x530x4e0x6f
(byte) 0xd5(byte) 0xdb0x370x45(byte) 0xde(byte) 0xfd(byte) 0x8e0x2f0x03(byte) 0xff0x6a0x720x6d0x6c0x5b0x51
(byte) 0x8d0x1b(byte) 0xaf(byte) 0x92(byte) 0xbb(byte) 0xdd(byte) 0xbc0x7f0x11(byte) 0xd90x5c0x410x1f0x100x5a(byte) 0xd8
0x0a(byte) 0xc10x31(byte) 0x88(byte) 0xa5(byte) 0xcd0x7b(byte) 0xbd0x2d0x74(byte) 0xd00x12(byte) 0xb8(byte) 0xe5(byte) 0xb4(byte) 0xb0
(byte) 0x890x69(byte) 0x970x4a0x0c(byte) 0x960x770x7e0x65(byte) 0xb9(byte) 0xf10x09(byte) 0xc50x6e(byte) 0xc6(byte) 0x84
0x18(byte) 0xf00x7d(byte) 0xec0x3a(byte) 0xdc0x4d0x200x79(byte) 0xee0x5f0x3e(byte) 0xd7(byte) 0xcb0x390x48
};

private int[] CK={
0x00070e15 0x1c232a31 0x383f464d 0x545b6269
0x70777e85 0x8c939aa1 0xa8afb6bd 0xc4cbd2d9
0xe0e7eef5 0xfc030a11 0x181f262d 0x343b4249
0x50575e65 0x6c737a81 0x888f969d 0xa4abb2b9
0xc0c7ced5 0xdce3eaf1 0xf8ff060d 0x141b2229
0x30373e45 0x4c535a61 0x686f767d 0x848b9299
0xa0a7aeb5 0xbcc3cad1 0xd8dfe6ed 0xf4fb0209
0x10171e25 0x2c333a41 0x484f565d 0x646b7279
};

private int Rotl(int xint y)
{
return x<<

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        301  2012-11-27 09:14  SMS4JA\.classpath

     文件        382  2012-11-27 09:14  SMS4JA\.project

     文件        598  2012-11-27 09:14  SMS4JA\.settings\org.eclipse.jdt.core.prefs

     文件       5356  2012-12-03 16:01  SMS4JA\bin\test\SMS4.class

     文件       2653  2012-12-03 16:01  SMS4JA\bin\test\testMain.class

     文件       6108  2012-11-28 18:23  SMS4JA\src\test\SMS4.java

     文件       2321  2012-11-29 09:34  SMS4JA\src\test\testMain.java

     目录          0  2012-12-18 10:18  SMS4JA\bin\test

     目录          0  2012-12-18 10:18  SMS4JA\src\test

     目录          0  2012-12-18 10:18  SMS4JA\.settings

     目录          0  2012-12-18 10:18  SMS4JA\bin

     目录          0  2012-12-18 10:18  SMS4JA\src

     目录          0  2012-12-18 10:18  SMS4JA

----------- ---------  ---------- -----  ----

                17719                    13


评论

共有 条评论