資源簡(jiǎn)介
SMS4國(guó)密JAVA加密解密完整代碼,無(wú)異常java類(lèi)文件,導(dǎo)入即用。Convert.java 內(nèi)部字符串進(jìn)制轉(zhuǎn)換類(lèi),SMS4.java 國(guó)密加密解密處理方法類(lèi)。TestMain.java 測(cè)試類(lèi),調(diào)用 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(fā)““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“
};
/**
?*?用于建立十六進(jìn)制字符的輸出的小寫(xiě)字符數(shù)組
?*/
private?static?final?char[]?DIGITS_LOWER?=?{?‘0‘?‘1‘?‘2‘?‘3‘?‘4‘?‘5‘
‘6‘?‘7‘?‘8‘?‘9‘?‘a(chǎn)‘?‘b‘?‘c‘?‘d‘?‘e‘?‘f‘?};
/**
?*?用于建立十六進(jìn)制字符的輸出的大寫(xiě)字符數(shù)組
?*/
private?static?final?char[]?DIGITS_UPPER?=?{?‘0‘?‘1‘?‘2‘?‘3‘?‘4‘?‘5‘
‘6‘?‘7‘?‘8‘?‘9‘?‘A‘?‘B‘?‘C‘?‘D‘?‘E‘?‘F‘?};
/**
?*?隨機(jī)生成自定義長(zhǎng)度的字符串
?*@param
?*@author?leixi.guo
?*@date
?*/
public?static?String?generateRandomString(int?length){
StringBuffer?sb?=?new?StringBuffer();
Random?rand?=?new?Random();
for?(int?i?=?0;?i? sb.append(STR_ARR[rand.nextInt(STR_ARR.length)]);
}
return?sb.toString();
}
/**
?*?整形轉(zhuǎn)換成網(wǎng)絡(luò)傳輸?shù)淖止?jié)流(字節(jié)數(shù)組)型數(shù)據(jù)
?*
?*?@param?num?一個(gè)整型數(shù)據(jù)
?*?@return?4個(gè)字節(jié)的自己數(shù)組
?*/
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;
}
/**
?*?四個(gè)字節(jié)的字節(jié)數(shù)據(jù)轉(zhuǎn)換成一個(gè)整形數(shù)據(jù)
?*
?*?@param?bytes?4個(gè)字節(jié)的字節(jié)數(shù)組
?*?@return?一個(gè)整型數(shù)據(jù)
?*/
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;
}
/**
?*?長(zhǎng)整形轉(zhuǎn)換成網(wǎng)絡(luò)傳輸?shù)淖止?jié)流(字節(jié)數(shù)組)型數(shù)據(jù)
?*
?*?@param?num?一個(gè)長(zhǎng)整型數(shù)據(jù)
?*?@return?4個(gè)字節(jié)的自己數(shù)組
?*/
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;
}
/**
?*?大數(shù)字轉(zhuǎn)換字節(jié)流(字節(jié)數(shù)組)型數(shù)據(jù)
?*
?*?@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;
}
/**
?*?換字節(jié)流(字節(jié)數(shù)組)型數(shù)據(jù)轉(zhuǎn)大數(shù)字
?*
?*?@param?b
?*?@return
?*/
public?static?BigInteger?byteConvertInteger(byte[]
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????目錄???????????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
評(píng)論
共有 條評(píng)論