Java中对字符串进行加密和解密(转)

  Java中对字符串进行加密和解密(转)
  1.引言
  在实际工作中我们常常会遇到对数据进行加密解密的工作(如对密码数据的保护或者对网络传输的数据进行保护),因为数据加密解密需要非常复杂、高效的算法,所以通常对于一般的程序员是无法完成的工作,即使对于一些公开的加密算法进行编程都是一件非常艰巨的任务(少数智商及高的程序员除外)。幸运的是现在有很多加解密算法有现成的API,我们只要了解一些加解密的工作原理,能够使用一些加解密API 来完成数据保护的工作就可以了。
  2.密码学简介
  密码学主要包括密码编码学(加密)和密码分析学(解密)。
  2.1密码学的几个主要作用:
  A. Confidentiality
  机密行,对数据进行保护;
  B. Authentication
  鉴别性,确定收到消息的接收人是数据应该正确送达的人,入侵者不能进行伪装;
  C. Integrity
  完整行,消息的接受者能够判断出接收的数据是否正确,是否在传输过程中遭到篡改;
  D. No repudiation
  抵赖性,发送数据的人不能在事后不承认自己发过的数据。
  2.2数据加解密模型
  加解密算法分为两种:受限制的安全算法和非受限的安全算法。受限制的安全算法出现的比较早,最初用于军方,对一些机密的数据进行加密,由于这种安全算法算法保密,所以使用率低,而且实际加密效果并不理想。非受限安全算法是一些公开的算法,使用率高,这些算法都是基于密钥的算法,现在我们主要使用的主要是这种算法。
  下面就是一个数据加解密的模型。
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Java实现对字符串的AES加密解密可以使用Java Cryptography Extension (JCE)提供的API。以下是一个简单的示例代码: 加密: ``` import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.util.Base64; public class AESEncryption { public static String encrypt(String plainText, String key) throws Exception { SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec); byte[] encryptedBytes = cipher.doFinal(plainText.getBytes()); return Base64.getEncoder().encodeToString(encryptedBytes); } } ``` 解密: ``` import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.util.Base64; public class AESDecryption { public static String decrypt(String encryptedText, String key) throws Exception { SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); byte[] encryptedBytes = Base64.getDecoder().decode(encryptedText); byte[] decryptedBytes = cipher.doFinal(encryptedBytes); return new String(decryptedBytes); } } ``` 其,`encrypt`方法接受两个参数:待加密的明文和密钥,返回加密后的密文;`decrypt`方法接受两个参数:待解密的密文和密钥,返回解密后的明文。这里使用的是AES算法,采用ECB模式和PKCS5Padding填充方式。在实际应用,需要注意密钥的安全性和密文的传输安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值