C#中的加密(Encryption)

关于加密

数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码为“密文”,使其只能在输入相应的密钥之后才能显示出原容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。

加密算法的分类.

  1. 对称加密算法

  2. 非对称加密算法

  3. 哈希算法
    ...

对称加密算法

对称式加密就是加密和解密使用同一个密钥,通常称之为“Session Key”这种加密技术在当今被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的Session Key长度为56bits。

非对称加密

非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难不把密钥告诉对方,不管用什么方法都有可能被别人窃听到。而非对称式的加密方法有两个密钥,且其中的“公钥”是可以公开的,也就不怕别人知道,收件人解密时只要用自己的私钥即可以,这样就很好地避免了密钥的传输安全性问题。[所以对于接收方来说,需要先将自己的公钥给发送方,用于发送方加密。接收到加密的数据后,自己(接收方)使用私钥来解密。]

哈希算法

将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。

构成哈希算法的条件

  • 从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法)

  • 对输入数据非常敏感,哪怕原始数据只修改了一个 Bit,最后得到的哈希值也大不相同;

  • 散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小;

  • 哈希算法的执行效率要尽量高效,针对较长的文本,也能快速地计算出哈希值。

具体的算法

C#中的加密(Encryption)

C#加密算法的工具包

Cqpaul.Encryption

dotnet add package Cqpaul.Encryption --version 1.0.0

实现算法

C#中的加密(Encryption)

源码地址:https://github.com/cqpaul/DotnetUtils/tree/main/Cqpaul.Encryption/Cqpaul.Encryption