sm2、sm4国密加密算法java实现(真实可用)
sm2、sm4国密加密算法java实现加密后内容加密后内容可自行验证是否是你需要的sm2加密算法私钥:BF1F907B4E0487F798DC80AFD7BC2A6201E8514233002272EA3BE2FC6F797843公钥:前缀04+x坐标+y坐标042DBA45E7B03394F603CADAFCDDEC854D3E01A4E9C52CD799B85B1A14BDB970137AE5
加密后内容
可自行验证是否是你需要的sm2加密算法
私钥:BF1F907B4E0487F798DC80AFD7BC2A6201E8514233002272EA3BE2FC6F797843
公钥:前缀04+x坐标+y坐标
042DBA45E7B03394F603CADAFCDDEC854D3E01A4E9C52CD799B85B1A14BDB970137AE58BA553D79F058604DC1CD4B77DE5408BA3308E767584100C2B663510C819
内容:123456
sm2加密后数据为
0456154B1733C8D93697E87F81AA9E19F14CEB8FA1CC1C93D6ACE482B9B7B91D291F019B54659CF3FCC6F315F01AAAE2159DCD83C311C88013589CB9C5F5890ACEA1D63DFE5A42B5F9A28570BE8C9675021532807ABE003ED481E0A5132253AC1E0C04DD611DD3
sm4加密key
98C63180C3748ED1F47B859DE501215B
sm4加密前:{“name”:“gsj”,“data”:“hello sm2”}
sm4加密后:12206b88313ccb63223300d3cf963f6707ca7eff19037bcdd20861915daffe1f3a6387473db1b59c0520f18885178ede
使用
/**
* Hello world!
*
*/
public class App
{
public static void main(String[] args) throws Exception
{
//生成密钥对
//SM2Utils.generateKeyPair();
String plainText = "123456";
byte[] sourceData = plainText.getBytes();
String prik = "BF1F907B4E0487F798DC80AFD7BC2A6201E8514233002272EA3BE2FC6F797843";
String pubk = "042DBA45E7B03394F603CADAFCDDEC854D3E01A4E9C52CD799B85B1A14BDB970137AE58BA553D79F058604DC1CD4B77DE5408BA3308E767584100C2B663510C819";
System.out.println("加密: ");
String cipherText = SM2Utils.encrypt(Utils.hexToByte(pubk), sourceData);
System.out.println(cipherText);
//String cipherText="04b9ad1beb76547ab29322e96993bbe5eafe0862cc0997a0327139d81b0515230f3380f1babbaada03b6a792f4f9cf9160b39411d481159ffcae1754beaa4925a88db02ef34e6a7853c2770994863d162eec0e35ae3916f7c1f224cea57f8e4e7d23376a784ebf";
System.out.println("解密: ");
plainText = new String(SM2Utils.decrypt(Utils.hexToByte(prik), Utils.hexToByte(cipherText)));
System.out.println(plainText);
String json = "{\"name\":\"gsj\",\"data\":\"hello sm2\"}";
System.out.println("加密前:"+json);
//自定义的32位16进制秘钥
String key = "98C63180C3748ED1F47B859DE501215B";
String cipher = Sm4Util.encryptEcb(key,json);//sm4加密
System.out.println("加密后:"+cipher);
System.out.println("校验:"+Sm4Util.verifyEcb(key,cipher,json));//校验加密前后是否为同一数据
json =Sm4Util.decryptEcb(key,cipher);
System.out.println("解密后:"+json);
}
}
pom.xml引入包
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.56</version>
</dependency>
下载地址
sm2、sm4国密加密算法java实现下载https://download.csdn.net/download/gusijin/18706823
更多推荐
所有评论(0)