API-03-加密和散列

加密和散列

一、网络安全

1.1网络中的隐患

  • 窃听:窃听者截获网络中的信息,并不修改,仅仅获取信息而已。
  • 篡改:篡改者截获发送方的信息,并将信息修改,再修改后的信息发送接收方,造成了信息的不对称。
  • 伪装:伪装者伪装成接收方,发送方发送的消息直接发给伪装者,接收方不不会收到任何消息。

1.2 网络安全的要素

  • 信息的机密性
  • 报文的完整性
  • 身份验证

1.3 网络安全的策略

  • 加密
  • 散列算法
  • 数字签名

二、加密解密

2.1 简介

加密是通过加密算法密钥对象来实现信息的机密性。

加密是可逆的,即加密后的密文可以解密。

一般来说,算法是公开的,而密钥不公开。

  • 加密的解释
凯撒密码:ABCDEFG(明文) ----> BCDEFGH(密文)
算法:每个字符加一个数字
密钥:这个数字是多少?

举例:发送方发送一段话“I Love You”
加密后的密文:“L Oryh brx”

2.2加密的分类

  • 对称加密
* 定义:只有一把密钥,由加密方和解密方共同持有。
* 对称加密的算法;
	* DES:*Data Encryption Standard*:数字加密标准
	* 3DES:*Data Encryption Standard*:三层数字加密标准
	* AES:*Encryption Standard*:高级加密标准
  • 非对称加密(公开加密)
* 定义:有两把密钥(公钥和私钥),公钥由加密人持有,私钥由解密人持有,公钥可以任意发布
* 非对称加密的算法:
	* RSA:三位发明者姓氏首字母
  • 两种加密方式的区别
* 非对称加密有两不同的密钥(公钥和私钥),对称加密只有一把,
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
这是一个常见的RSA加密算法的实现。RSA是一种非对称加密算法,它使用公钥加密、私钥解密或者私钥加密、公钥解密来实现数据的保护。在这个算法中,ECB是块加密模式,OAEP是填充方式,SHA-256是算法。MGF1是一种掩码生成功能,用于保护数据的完整性。 在Java中,我们可以使用JCE(Java Cryptography Extension)提供的RSA API来实现RSA加密解密。实现步骤大体如下: 1. 生成RSA密钥对:使用KeyPairGenerator,设置密钥长度和随机数生成器等参数,生成公钥和私钥。 2. 加密:使用Cipher,设置加密模式和填充方式,使用公钥对数据进行加密。 3. 解密:使用Cipher,设置解密模式和填充方式,使用私钥对加密数据进行解密。 下面是Java代码示例: ```java import java.security.*; import javax.crypto.*; import javax.crypto.spec.*; import java.util.*; import java.io.*; public class RSAExample { public static void main(String[] args) { try { // 生成RSA密钥对 KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); keyGen.initialize(2048, new SecureRandom()); KeyPair keyPair = keyGen.generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); // 加密 Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING"); cipher.init(Cipher.ENCRYPT_MODE, publicKey); byte[] plaintText = "This is a test message".getBytes("UTF-8"); byte[] cipherText = cipher.doFinal(plaintText); // 解密 cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[] decryptedText = cipher.doFinal(cipherText); // 输出结果 System.out.println("Original plain text: " + new String(plaintText)); System.out.println("Encrypted cipher text: " + new String(cipherText)); System.out.println("Decrypted plain text: " + new String(decryptedText)); } catch (Exception ex) { ex.printStackTrace(); } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值