使用自己自定义的密钥报错一般是密钥超长(32位),sm4支持16位。在确定密钥无误的情况下,可将32位字符串转为16位byte数组
1 2
| SymmetricCrypto sm4 = SmUtil.sm4(hexStringToByteArray(key)); String encryptHex = sm4.encryptHex(json);
|
1 2 3 4 5 6 7 8 9 10 11
| public static byte[] hexStringToByteArray(String hexString) { hexString = hexString.replaceAll(" ", ""); int len = hexString.length(); byte[] bytes = new byte[len / 2]; for (int i = 0; i < len; i += 2) { // 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个字节 bytes[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4) + Character .digit(hexString.charAt(i + 1), 16)); } return bytes; }
|
最后更新时间: