• 大小: 24KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: 其他
  • 标签:

资源简介

做安全测评用到国密算法,编写的小程序,之前在网上找到一个资源加密后的解雇不对,这个是经过验证通过可用的加密算法,有CBC和ECB两种方式的demo,花了一上午终于搞定,运行里面的MainTest类的main函数可用。

资源截图

代码片段和文件信息

package com.netpower.sms4;



import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import sun.misc.base64Decoder;
import sun.misc.base64Encoder;

public class MainTest {
private String secretKey = “JeF8U9wHFOMfs2Y8“;
private String iv = “UISwD9fW6cFh9SNS“;
private boolean hexString = false;

public MainTest() {

}

public String encryptData_ECB(String plainText) {

try {
SMS4Context ctx = new SMS4Context();
ctx.isPadding = true;
ctx.mode = SMS4.SM4_ENCRYPT;

byte[] keyBytes;
if (hexString) {
keyBytes = Util.hexStringToBytes(secretKey);
} else {
keyBytes = secretKey.getBytes();
}

SMS4 SMS4 = new SMS4();
SMS4.sm4_setkey_enc(ctx keyBytes);
byte[] encrypted = SMS4.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 {
SMS4Context ctx = new SMS4Context();
ctx.isPadding = true;
ctx.mode = SMS4.SM4_DECRYPT;

byte[] keyBytes;
if (hexString) {
keyBytes = Util.hexStringToBytes(secretKey);
} else {
keyBytes = secretKey.getBytes();
}

SMS4 SMS4 = new SMS4();
SMS4.sm4_setkey_dec(ctx keyBytes);
byte[] decrypted = SMS4.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 {
SMS4Context ctx = new SMS4Context();
ctx.isPadding = true;
ctx.mode = SMS4.SM4_ENCRYPT;

byte[] keyBytes;
byte[] ivBytes;
if (hexString) {
keyBytes = Util.hexStringToBytes(secretKey);
ivBytes = Util.hexStringToBytes(iv);
} else {
keyBytes = secretKey.getBytes();
ivBytes = iv.getBytes();
}

SMS4 SMS4 = new SMS4();
SMS4.sm4_setkey_enc(ctx keyBytes);
byte[] encrypted = SMS4.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 {
SMS4Context ctx = new SMS4Context();
ctx.isPadding = true;
ctx.mode = SMS4.SM4_DECRYPT;

byte[] keyBytes;
byte[] ivBytes;
if (hexString) {
keyBytes = Util.hexStringToBytes(secretKey);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-07-30 20:36  SM4\
     文件         232  2017-07-30 20:29  SM4\.classpath
     文件         379  2017-07-30 20:29  SM4\.project
     目录           0  2017-07-30 20:36  SM4\.settings\
     文件          88  2017-08-01 14:47  SM4\.settings\org.eclipse.core.resources.prefs
     文件         598  2017-07-30 20:29  SM4\.settings\org.eclipse.jdt.core.prefs
     目录           0  2017-08-17 11:03  SM4\bin\
     目录           0  2017-08-17 11:03  SM4\bin\com\
     目录           0  2017-08-17 14:45  SM4\bin\com\netpower\
     目录           0  2017-08-17 14:58  SM4\bin\com\netpower\sms4\
     文件        4154  2017-08-17 14:59  SM4\bin\com\netpower\sms4\MainTest.class
     文件        8114  2017-08-17 14:45  SM4\bin\com\netpower\sms4\SMS4.class
     文件         419  2017-08-17 14:46  SM4\bin\com\netpower\sms4\SMS4Context.class
     文件       10072  2017-08-17 14:47  SM4\bin\com\netpower\sms4\Util.class
     目录           0  2017-07-30 20:36  SM4\src\
     目录           0  2017-07-30 20:36  SM4\src\com\
     目录           0  2017-08-17 14:45  SM4\src\com\netpower\
     目录           0  2017-08-17 14:58  SM4\src\com\netpower\sms4\
     文件        3737  2017-08-17 14:59  SM4\src\com\netpower\sms4\MainTest.java
     文件       12465  2017-08-17 14:45  SM4\src\com\netpower\sms4\SMS4.java
     文件         308  2017-08-17 14:45  SM4\src\com\netpower\sms4\SMS4Context.java
     文件       20151  2017-08-17 14:47  SM4\src\com\netpower\sms4\Util.java

评论

共有 条评论

相关资源