资源简介
SMS4国密JAVA加密解密完整代码,无异常java类文件,导入即用。Convert.java 内部字符串进制转换类,SMS4.java 国密加密解密处理方法类。TestMain.java 测试类,调用 encrypt 加密 decode 解密
代码片段和文件信息
package com.xinghuo.common.SM4;
import java.math.BigInteger;
import java.util.Random;
/**
* @author leixi.guo
*/
public class Convert {
private static String[] STR_ARR = new String[]{
“a““b““c““d““e““f““g““h““i““j““k““l““m“
“n““o““p““q““r““s““t““u““v““w““x““y“
“z““A““B““C““D““E““F““G““H““I““J““K““L““M“
“N““O““P““Q““R““S““T““U““V““W““X““Y“
“Z““1““2““3““4““5““6““7““8““9““0“
};
/**
* 用于建立十六进制字符的输出的小写字符数组
*/
private static final char[] DIGITS_LOWER = { ‘0‘ ‘1‘ ‘2‘ ‘3‘ ‘4‘ ‘5‘
‘6‘ ‘7‘ ‘8‘ ‘9‘ ‘a‘ ‘b‘ ‘c‘ ‘d‘ ‘e‘ ‘f‘ };
/**
* 用于建立十六进制字符的输出的大写字符数组
*/
private static final char[] DIGITS_UPPER = { ‘0‘ ‘1‘ ‘2‘ ‘3‘ ‘4‘ ‘5‘
‘6‘ ‘7‘ ‘8‘ ‘9‘ ‘A‘ ‘B‘ ‘C‘ ‘D‘ ‘E‘ ‘F‘ };
/**
* 随机生成自定义长度的字符串
*@param
*@author leixi.guo
*@date
*/
public static String generateRandomString(int length){
StringBuffer sb = new StringBuffer();
Random rand = new Random();
for (int i = 0; i < length ; i++){
sb.append(STR_ARR[rand.nextInt(STR_ARR.length)]);
}
return sb.toString();
}
/**
* 整形转换成网络传输的字节流(字节数组)型数据
*
* @param num 一个整型数据
* @return 4个字节的自己数组
*/
public static byte[] intToBytes(int num) {
byte[] bytes = new byte[4];
bytes[0] = (byte) (0xff & (num >> 0));
bytes[1] = (byte) (0xff & (num >> 8));
bytes[2] = (byte) (0xff & (num >> 16));
bytes[3] = (byte) (0xff & (num >> 24));
return bytes;
}
/**
* 四个字节的字节数据转换成一个整形数据
*
* @param bytes 4个字节的字节数组
* @return 一个整型数据
*/
public static int byteToInt(byte[] bytes) {
int num = 0;
int temp;
temp = (0x000000ff & (bytes[0])) << 0;
num = num | temp;
temp = (0x000000ff & (bytes[1])) << 8;
num = num | temp;
temp = (0x000000ff & (bytes[2])) << 16;
num = num | temp;
temp = (0x000000ff & (bytes[3])) << 24;
num = num | temp;
return num;
}
/**
* 长整形转换成网络传输的字节流(字节数组)型数据
*
* @param num 一个长整型数据
* @return 4个字节的自己数组
*/
public static byte[] longToBytes(long num) {
byte[] bytes = new byte[8];
for(int i = 0; i < 8; i++) {
bytes[i] = (byte) (0xff & (num >> (i * 8)));
}
return bytes;
}
/**
* 大数字转换字节流(字节数组)型数据
*
* @param n
* @return
*/
public static byte[] byteConvert32Bytes(BigInteger n) {
byte tmpd[] = (byte[]) null;
if(n == null) {
return null;
}
if(n.toByteArray().length == 33) {
tmpd = new byte[32];
System.arraycopy(n.toByteArray() 1 tmpd 0 32);
}
else if(n.toByteArray().length == 32) {
tmpd = n.toByteArray();
}
else {
tmpd = new byte[32];
for(int i = 0; i < 32 - n.toByteArray().length; i++) {
tmpd[i] = 0;
}
System.arraycopy(n.toByteArray() 0 tmpd 32 - n.toByteArray().length n.toByteArray().length);
}
return tmpd;
}
/**
* 换字节流(字节数组)型数据转大数字
*
* @param b
* @return
*/
public static BigInteger byteConvertInteger(byte[]
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-12-19 10:56 SM4\
文件 15984 2019-12-19 10:39 SM4\Convert.java
文件 12435 2019-12-19 10:53 SM4\SMS4.java
文件 450 2019-12-19 10:56 SM4\TestMain.java
- 上一篇:Java-SpringMVC-毕业设计-源代码
- 下一篇:数据结构(Java)复习题
相关资源
- java国密算法SM4加密.zip
- 大宝CA版本的国密算法DoubleCA-JCE实现,
- 国密版本的SSL库
- SM2 SM3 SM4国密算法JAVA与JS实现版本
- 国密SM2、SM3、SM4源代码
- sm2-sm4国密算法工具包及工具类245790
- SM2&SM3;&SM4;国密算法Java实现含详细测试
- SM2&SM3&SM4国密算法Java实现含详细测试
- [SM2_SM3_SM4]国密加解密算法java实现源码
- SM2&SM3&SM4国密算法Java实现含详细测试
- java实现国密算法SM2SM3SM4算法
- java调用Gmssl国密接口
- 国密SM3算法实现源代码只适合JAVA
- java国密算法实现
- DoubleCA版本的国密算法JCE(Java Crypto
- JAVA国密算法pnc,sm2,sm3,sm4,jar包直
- 国密算法SM4加解密算法JAVA
- 真正国密SM2SM3SM4的前后台配套js和ja
- java实现国密SM3算法
- SMS4国密封装接口直接可用java.zip
- js+java实现国密算法SM2
- 国密算法SM3_SM4.zip
- 基于国密SM2加解密(JAVA版)
- 国密算法sm4的java实现
- SM 国密算法Java+JS
- sm4国密算法 java实现
- SM2&SM3&SM4国密规范及Java软算法实现
- java 国密算法实现包含SM2 SM3 SM4和数字
- 基于Java的SM2_SM3_SM4国密算法java源代码
- SM2_SM3_SM4国密算法java源码+PC工具
评论
共有 条评论