sm2、sm4国密加密算法java实现(真实可用)

sm2、sm4国密加密算法java实现

加密后内容

可自行验证是否是你需要的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

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值