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

资源简介

公司要求用sm4进行加密解密,对国密算法sm4的java实现,附带详细实例和SM4分组密码算法.pdf。希望能帮助到有同样需求的你。

资源截图

代码片段和文件信息

package com.security.cipher.sm;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

public class SM4 
{
public static final int SM4_ENCRYPT = 1;

public static final int SM4_DECRYPT = 0;

private long GET_ULONG_BE(byte[] b int i) 
{
long n = (long)(b[i] & 0xff) << 24 | (long)((b[i + 1] & 0xff) << 16) | (long)((b[i + 2] & 0xff) << 8) | (long)(b[i + 3] & 0xff) & 0xffffffffL;
return n;
}

private void PUT_ULONG_BE(long n byte[] b int i) 
{
b[i] = (byte)(int)(0xFF & n >> 24);
        b[i + 1] = (byte)(int)(0xFF & n >> 16);
        b[i + 2] = (byte)(int)(0xFF & n >> 8);
        b[i + 3] = (byte)(int)(0xFF & n);
}

private long SHL(long x int n) 
{
return (x & 0xFFFFFFFF) << n;
}

private long ROTL(long x int n) 
{
return SHL(x n) | x >> (32 - n);
}

private void SWAP(long[] sk int i)
{
long t = sk[i];
sk[i] = sk[(31 - i)];
sk[(31 - i)] = t;
}

public static final byte[] SboxTable = { (byte) 0xd6 (byte) 0x90 (byte) 0xe9 (byte) 0xfe
(byte) 0xcc (byte) 0xe1 0x3d (byte) 0xb7 0x16 (byte) 0xb6
0x14 (byte) 0xc2 0x28 (byte) 0xfb 0x2c 0x05 0x2b 0x67
(byte) 0x9a 0x76 0x2a (byte) 0xbe 0x04 (byte) 0xc3
(byte) 0xaa 0x44 0x13 0x26 0x49 (byte) 0x86 0x06
(byte) 0x99 (byte) 0x9c 0x42 0x50 (byte) 0xf4 (byte) 0x91
(byte) 0xef (byte) 0x98 0x7a 0x33 0x54 0x0b 0x43
(byte) 0xed (byte) 0xcf (byte) 0xac 0x62 (byte) 0xe4
(byte) 0xb3 0x1c (byte) 0xa9 (byte) 0xc9 0x08 (byte) 0xe8
(byte) 0x95 (byte) 0x80 (byte) 0xdf (byte) 0x94 (byte) 0xfa
0x75 (byte) 0x8f 0x3f (byte) 0xa6 0x47 0x07 (byte) 0xa7
(byte) 0xfc (byte) 0xf3 0x73 0x17 (byte) 0xba (byte) 0x83
0x59 0x3c 0x19 (byte) 0xe6 (byte) 0x85 0x4f (byte) 0xa8
0x68 0x6b (byte) 0x81 (byte) 0xb2 0x71 0x64 (byte) 0xda
(byte) 0x8b (byte) 0xf8 (byte) 0xeb 0x0f 0x4b 0x70 0x56
(byte) 0x9d 0x35 0x1e 0x24 0x0e 0x5e 0x63 0x58 (byte) 0xd1
(byte) 0xa2 0x25 0x22 0x7c 0x3b 0x01 0x21 0x78 (byte) 0x87
(byte) 0xd4 0x00 0x46 0x57 (byte) 0x9f (byte) 0xd3 0x27
0x52 0x4c 0x36 0x02 (byte) 0xe7 (byte) 0xa0 (byte) 0xc4
(byte) 0xc8 (byte) 0x9e (byte) 0xea (byte) 0xbf (byte) 0x8a
(byte) 0xd2 0x40 (byte) 0xc7 0x38 (byte) 0xb5 (byte) 0xa3
(byte) 0xf7 (byte) 0xf2 (byte) 0xce (byte) 0xf9 0x61 0x15
(byte) 0xa1 (byte) 0xe0 (byte) 0xae 0x5d (byte) 0xa4
(byte) 0x9b 0x34 0x1a 0x55 (byte) 0xad (byte) 0x93 0x32
0x30 (byte) 0xf5 (byte) 0x8c (byte) 0xb1 (byte) 0xe3 0x1d
(byte) 0xf6 (byte) 0xe2 0x2e (byte) 0x82 0x66 (byte) 0xca
0x60 (byte) 0xc0 0x29 0x23 (byte) 0xab 0x0d 0x53 0x4e 0x6f
(byte) 0xd5 (byte) 0xdb 0x37 0x45 (byte) 0xde (byte) 0xfd
(byte) 0x8e 0x2f 0x03 (byte) 0xff 0x6a 0x72 0x6d 0x6c 0x5b
0x51 (byte) 0x8d 0x1b (byte) 0xaf (byte) 0x92 (byte) 0xbb
(byte) 0xdd (byte) 0xbc

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

     文件       9784  2016-09-24 10:05  国密算法sm4的java实现\com\security\cipher\sm\SM4.java

     文件       4296  2016-09-24 10:05  国密算法sm4的java实现\com\security\cipher\sm\SM4Utils.java

     文件        245  2016-09-24 10:05  国密算法sm4的java实现\com\security\cipher\sm\SM4_Context.java

     文件      17401  2016-09-24 10:05  国密算法sm4的java实现\com\security\cipher\sm\Util.java

     文件     205357  2016-01-07 13:04  国密算法sm4的java实现\SM4分组密码算法.pdf

     目录          0  2018-10-17 15:44  国密算法sm4的java实现\com\security\cipher\sm

     目录          0  2016-09-24 10:06  国密算法sm4的java实现\com\security\cipher

     目录          0  2016-09-24 10:06  国密算法sm4的java实现\com\security

     目录          0  2016-09-24 10:06  国密算法sm4的java实现\com

     目录          0  2018-10-17 15:40  国密算法sm4的java实现

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

               237083                    10


评论

共有 条评论