欢迎来到传世资源网!
加载中...
正在加载,请耐心等待...

SM2&SM3&SM4 java实现

  • 资源分类:未分类
  • 发 布 人:房东的猫
  • 文件大小:1667236
  • 文件格式:.zip
  • 浏览次数:25
  • 下载次数: 0
  • 发布时间:9月5日

  • 标签:
8.5玩家评分(1人评分)
介绍 评论 失效链接反馈

SM2 SM3 SM4 的java软实现,经过多种语言的加密解密测试,通用性极强
from clipboardpackage com.mlq.sm;import java.io.IOException;import java.util.regex.Matcher;import java.util.regex.Pattern;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class SM4Utils{private String secretKey = "";private String iv = "";private boolean hexString = false;public SM4Utils(){}public String encryptData_ECB(String plainText){try {SM4_Context ctx = new SM4_Context();ctx.isPadding = true;ctx.mode = SM4.SM4_ENCRYPT;byte[] keyBytes;if (hexString){keyBytes = Util.hexStringToBytes(secretKey);}else{keyBytes = secretKey.getBytes();}SM4 sm4 = new SM4();sm4.sm4_setkey_enc(ctx, keyBytes);byte[] encrypted = sm4.sm4_crypt_ecb(ctx, plainText.getBytes("GBK"));String cipherText = new BASE64Encoder().encode(encrypted);if (cipherText != null && cipherText.trim().length() > 0){Pattern p = Pattern.compile("\\s*|\t|\r|\n");Matcher m = p.matcher(cipherText);cipherText = m.replaceAll("");}return cipherText;} catch (Exception e) {e.printStackTrace();return null;}}public String decryptData_ECB(String cipherText){try {SM4_Context ctx = new SM4_Context();ctx.isPadding = true;ctx.mode = SM4.SM4_DECRYPT;byte[] keyBytes;if (hexString){keyBytes = Util.hexStringToBytes(secretKey);}else{keyBytes = secretKey.getBytes();}SM4 sm4 = new SM4();sm4.sm4_setkey_dec(ctx, keyBytes);byte[] decrypted = sm4.sm4_crypt_ecb(ctx, new BASE64Decoder().decodeBuffer(cipherText));return new String(decrypted, "GBK");} catch (Exception e) {e.printStackTrace();return null;}}public String encryptData_CBC(String plainText){try {SM4_Context ctx = new SM4_Context();ctx.isPadding = true;ctx.mode = SM4.SM4_ENCRYPT;byte[] keyBytes;byte[] ivBytes;if (hexString){keyBytes = Util.hexStringToBytes(secretKey);ivBytes = Util.hexStringToBytes(iv);}else{keyBytes = secretKey.getBytes();ivBytes = iv.getBytes();}SM4 sm4 = new SM4();sm4.sm4_setkey_enc(ctx, keyBytes);byte[] encrypted = sm4.sm4_crypt_cbc(ctx, ivBytes, plainText.getBytes("GBK"));String cipherText = new BASE64Encoder().encode(encrypted);if (cipherText != null && cipherText.trim().length() > 0){Pattern p = Pattern.compile("\\s*|\t|\r|\n");Matcher m = p.matcher(cipherText);cipherText = m.replaceAll("");}return cipherText;} catch (Exception e) {e.printStackTrace();return null;}}public String decryptData_CBC(String cipherText){try {SM4_Context ctx = new SM4_Context();ctx.isPadding = true;ctx.mode = SM4.SM4_DECRYPT;byte[] keyBytes;byte[] ivBytes;if (hexString){keyBytes = Util.hexStringToBytes(secretKey);ivBytes = Util.hexStringToBytes(iv);}else{keyBytes = secretKey.getBytes();ivBytes = iv.getBytes();}SM4 sm4 = new SM4();sm4.sm4_setkey_dec(ctx, keyBytes);byte[] decrypted = sm4.sm4_crypt_cbc(ctx, ivBytes, new BASE64Decoder().decodeBuffer(cipherText));return new String(decrypted, "GBK");} catch (Exception e){e.printStackTrace();return null;}}public static void main(String[] args) throws IOException {String plainText = "ererfeiisgod";SM4Utils sm4 = new SM4Utils();sm4.secretKey = "JeF8U9wHFOMfs2Y8";sm4.hexString = false;System.out.println("ECB模式");String cipherText = sm4.encryptData_ECB(plainText);System.out.println("密文: " cipherText);System.out.println("");plainText = sm4.decryptData_ECB(cipherText);System.out.println("明文: " plainText);System.out.println("");System.out.println("CBC模式");sm4.iv = "UISwD9fW6cFh9SNS";cipherText = sm4.encryptData_CBC(plainText);System.out.println("密文: " cipherText);System.out.println("");plainText = sm4.decryptData_CBC(cipherText);System.out.println("明文: " plainText);}}

下载声明:

本站资源均有第三方用户自行上传分享推荐,非本站自制,仅供玩家做交流学习之用!切勿用于商业用途!游戏作品版权归原作者享有,如有版权问题,请附带版权证明至邮件,本平台将应您的要求删除。
相关推荐:

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复