有时候逛群的时候,总有大神将某句话进行某种算法加密,在群里聊来聊去,我真的特别羡慕,只因为我看不懂>_
一、DES 加密算法简要原理:
画得不好,见谅哈,更底层的原理暂时不去深究,密码学本来就是个大坑,越钻越深,不是相关专业的不推荐深入学习。
废话不多说,上代码:
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
import java.util.Base64.Decoder;
import java.util.Base64.Encoder;
import java.util.Random;
public class TestDES {
public static void main(String[] args) {
String plainText = "你今天吃饭了吗,如果吃了,很好,那证明了你很爱我!"; //明文
//值得注意的是,以当前getKey()这个方法来看
//原始密匙的长度越大,可能产生的不同密文会越多(length个密文,线性增长)
//设密文数目为y,原始密匙长度为x,则 y = x
//当rawKey只有一个占一个字节的字符时,则只产生一个密文
//(经我多次试验"01"这个原始密匙有2个字节,但似乎也只产生一个密文,原因不明)
//我写的这个getKey()确实鸡肋>_<
String rawKey = "ld