什么是加密(Encrypt)?什么是哈希(Hash)?

文章介绍了加密的基本概念,包括明文、密文、加密算法和秘钥。提到了公钥和私钥在非对称加密中的作用,以及对称加密的特点。此外,还阐述了哈希函数与加密的区别,强调哈希的不可逆性和固定长度输出。

加密(Encrypt)

加密的概念:假设有一个参数k和一种变换方式E。原始信息 m 通过变换 E ,得到一个新的字符串(公式为 c = E(m))。那么我们就称原始信息 m 为明文,新字符串 c 为密文。将明文转化为密文的过程叫做加密E 这种变换方式叫做加密算法,而参数 k 叫做秘钥。在上述例子中,只要我们更换了秘钥 k ,就能得到完全不同的密文 c

既然就加密,就有相应的解密过程。我们将密文c恢复成明文m的过程成为解密过程。

公钥和私钥的概念

甲乙两人通信,甲将他的公钥公布给所有人(公钥的意思就是任何人都知道甲的公钥),因此,但凡有人想和甲通信,都可以使用甲的公钥将要传送的信息(明文)加密成密文发送给甲。但是,只有甲自己知道私钥(这个私钥能解开公钥加密的文件),也就是说只有甲能把密文还原为明文。除甲以外其他人即使截获到密文也不可能知道密文所传递的信息。

对称加密

发送方使用秘钥A对信息加密,接收方也使用秘钥A解密。

非对称加密

发送方使用接收方的公钥加密,接收方使用自己的私钥解密。

哈希

主要说一下哈希和加密的不同之处,哈希是将原始字符串转为相同长度的、不可逆的字符串(或叫做消息摘要),而加密(Encrypt)是将原始字符串转换成具有不同长度的、可逆的密文


他们的区别主要如下:
1、哈希算法生成的字符串与原字符串长度相同,而加密算法生成的文本长度与原始文本的长度不一定相同。
2、哈希算法是不可逆的,而加密算法是可逆的。
 



 

### CryptoJS 支持的加密算法及其工作原理 #### AES 加密 CryptoJS 提供了高级加密标准(Advanced Encryption Standard, AES)的支持。AES 是一种对称加密算法,意味着加密和解密过程使用相同的密钥[^1]。以下是其实现方式的一个简单示例: ```javascript const CryptoJS = require('crypto-js'); // 使用 AES 进行加密 let ciphertext = CryptoJS.AES.encrypt('message to be encrypted', 'secret key 123').toString(); console.log(ciphertext); // 使用 AES 进行解密 let bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123'); let plaintext = bytes.toString(CryptoJS.enc.Utf8); console.log(plaintext); ``` #### 哈希函数 CryptoJS 实现了几种哈希函数,包括 SHA-512 和 HMAC-SHA512。这些函数用于生成固定长度的消息摘要,通常用于数据完整性验证和密码存储[^2]。 ```javascript const message = 'The quick brown fox jumps over the lazy dog'; const key = 'a secret key'; // 计算消息的 SHA-512 散列值 let hash = CryptoJS.SHA512(message).toString(); console.log(hash); // 计算基于键的散列 (HMAC) let hmac = CryptoJS.HmacSHA512(message, key).toString(); console.log(hmac); ``` #### 非对称加密 虽然 CryptoJS 主要专注于对称加密哈希功能,但它并不直接支持像 RSA 或 ECC 这样的非对称加密算法[^3]。如果需要实现公钥基础设施(PKI),可能需要其他库,例如 `node-rsa` 或者 Web Cryptography API。 #### 工作原理概述 - **AES**: 利用分组密码技术将明文分成固定大小的数据块并逐块处理。 - **Hashing**: 将任意长度输入映射到固定长度输出,不可逆操作。 - **RSA/ECC**: 虽然不在 CryptoJS 的核心范围内,但它们依赖于大数分解难题或者椭圆曲线离散对数问题提供安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

codereasy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值