java des 加密 字符串_Java 简易实现一段字符串的 DES 加密和解密

本文介绍了Java中DES加密算法的简易实现,包括加密和解密过程,以及如何避免编码问题。通过示例代码展示了如何使用DES进行字符串的加解密,并解释了Base64编码在解决解码乱码问题中的作用。
摘要由CSDN通过智能技术生成

有时候逛群的时候,总有大神将某句话进行某种算法加密,在群里聊来聊去,我真的特别羡慕,只因为我看不懂>_

一、DES 加密算法简要原理:

b4d0c95a095f897d68c168a7f0a18b8b.png

画得不好,见谅哈,更底层的原理暂时不去深究,密码学本来就是个大坑,越钻越深,不是相关专业的不推荐深入学习。

废话不多说,上代码:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值