DES对称加密用法

对称加密

对称加密、解密都使用同一个密钥,需要对密钥安全控制。
加解密效率较高。

非对称加密

非对称加密有一堆密钥,一把私钥,一把公钥。非对称加密中,发送密文一方用对方的公钥进行加密,对方收到后用自己的私钥解密。
非对称加密通常使用与一对多情况,一对多时服务器只需要拥有一个私钥就可以给多个客户端进行加密通信。

两者结合
通信的双方用非对称加密将对称加密的密钥进行加密,这样在密钥被加密的情况下可以用对称加密方式进行通信。

对称加密使用:

private SecretKey secretKey;
public Code(String secret) throws Exception {
		DESKeySpec keySpec = new DESKeySpec(secret.getBytes("UTF-8"));
		SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DES");
		this.secretKey = secretKeyFactory.generateSecret(keySpec);
	}

首先加密需要一个秘钥,根据该秘钥(因为常用汉字编码是UTF-8)以UTF-8格式获取字节串,将其生成一个DESKeySpec。
根据DES获取一个secretKeyFactory 对象,依据keySpec 生成对应SecretKey,这就完成了加密前的布局工作。

加密字符串:

public String encode(String data) throws Exception {
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey, random);
        byte[] tmp = cipher.doFinal(data.getBytes("UTF-8"));
        byte[] temp = Base64.encodeBase64URLSafe(tmp);
        encode = new String(temp);
		return encode;
	}

主要容易出错点就是每次获取字节串都要注意编码格式是否和之前相同。
加密结果及加密对象都是字节串,所以字符串加密前及加密后都需要进行字节串与字符串的转换。
Base64有许多加密手法,其中URLSafe加密出的字符串可以无障碍给文件命名,方便后期给文件加密且命名的操作。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔幻音

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值