场景,一次接口开发,C#的加密方式为填充零, ECB模式 , DES, 本人是java开发,需要自己网上搞一个。如下
*** 重要
byte[] nul_bytes = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
String source = "1" + new String(nul_bytes);
在DES/ECB/NoPadding模式,必须内容要8个长度,因此我们需要填充00空字符, 若是打空格是不行的,空格的16进制值是0x20
package com.cjcx.inter.service; import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import java.security.InvalidKeyException; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.spec.InvalidKeySpecException; public class DesUtil { //算法名称 public static final String KEY_ALGORITHM = "DES"; //算法名称/加密模式/填充方式 //DES共有四种工作模式-->>ECB:电子密码本模式、CBC:加密分组链接模式、CFB:加密反馈模式、OFB:输出反馈模式 public static final String CIPHER_ALGORITHM = "DES/ECB/NoPadding"; //DES/ECB/NoPadding /** NoPadding API或算法本身不对数据进行处理,加密数据由加密双方约定填补算法。例如若对字符串数据进行加解密,可以补充\0或者空格,然后trim PKCS5Padding 加密前:数据字节长度对8取余,余数为m,若m>