加密算法的分类
程序员文章站
2022-07-09 21:53:04
...
重点在加密解密的 接口调用和应用,而不是加密解密算法的本身的实现,【像 AES RSA ECC 这些算法都是 数学类的硕士博士研究的东西,作为程序员 ,大致的了解一下思路就行了,会调用接口,当然有这个 精力和能力的程序员还是可以详细的了解一下的】
一.对称加密:
- XOR【这篇介绍 】
- DES(可**得,过时的), 3DES【DES -> AES过度得中间产物】
- AES
- Blowfish
- twofish
二.非对称加密:
- RSA
- Elgamal
- 背包算法
- Rabin
- D-H
- ECC(椭圆曲线加密算法)
三.散列算法:
- MD5 【Message-Digest Algorithm 5】
- SHA1 SHA2(SHA-256,512) Secure Hash Algorithm
四.介绍第一种 异或 【XOR】对称加密算法。【不许笑画的臭】
代码Demo
#include <iostream>
#include <Windows.h>
using namespace std;
// data是 密文 传进去就是 解密 , 是原文就是加密
char* dataByXor(const char* data, int dataLen, const char* key, int keyLen);
int main(int argc, const char* argv[])
{
const char* data = "hello world";
const char* key = "12345678";
char* dstData = dataByXor(data, strlen(data), key, strlen(key));
cout << "加密后:" << dstData << endl;
char *srcData = dataByXor(dstData, strlen(data), key, strlen(key));
cout << "解密后:" << srcData << endl;
delete[] dstData; dstData = nullptr;
delete[] srcData; srcData = nullptr;
system("pause");
return 0;
}
char*
dataByXor(const char* data, int dataLen, const char* key, int keyLen)
{
int i;
char* dstData = new char[dataLen];
for (i = 0; i < dataLen; ++i) {
dstData[i] = (char)(data[i] ^ key[i % keyLen]);
}
return dstData;
}
效果:
上一篇: C#学习记录
下一篇: Java零基础入门——循环