密码学
_Nigel_
I code, not for me, but the world.
展开
-
DES加密(c实现)
本文旨在加深对DES加密的认知/*DES加密算法的实现分为对密钥和明文的两步处理对于密钥1.它是64位的,实际上只取五六位 每个字节的第八位不取2.先进行ip置换3.然后进行十六轮 轮加密 每轮生成48位的子密钥(分为左C0 ,右D0, 各28位) 生成的子密钥为48位(56位中只选取28位)对于密文 :1.首先拆分为64的整数倍 这里简单的用zeropadding填充2....原创 2019-03-31 17:49:11 · 1839 阅读 · 0 评论 -
TEA,XTEA加密(c实现)
在vs2013下成功编译并运行TEA 正如名字那样,是个Tiny的算法,加密速度和效率都很高。一般迭代32次,密钥为16字节(128bit)明文是以每sizeof(unsigned int) * 2 分块来加密的#include <cstdio>#include <Windows.h>#include <cstring>void TEA_Encr...原创 2019-04-11 13:35:13 · 3579 阅读 · 1 评论 -
RC4流加密(c实现)
RC4流加密,这次非常简单。需要注意的是,会进行两步swap操作,最后一次的时候不再需要key,仅第一次需要key// RC4_Encryption.cpp : 定义控制台应用程序的入口点。/* 对于每一个字节而言,与加密后得到的0~2^8-1 之间的一个数进行异或 需要一个s的状态向量 k为密钥 还需要一个t向量 t向量用来盛放扩展后的密钥,扩展为256字节 首先k进行拓展存...原创 2019-04-02 18:15:30 · 1325 阅读 · 0 评论 -
IDEA加密算法(c实现)
vs2013环境下面成功编译并且运行IDEA算法,全称是Internationale Data Encrypt Algorithm 一种国际数据加密算法 至今为止都很安全,是一种块加密算法。密钥长度为128bit(16字节),以每64bit(8字节)为单位进行加密。算法主要流程:1.首先进行密钥拓展,加密一个块需要52个密钥(48 + 4)1.1采用每次循环左移25位的方式,每次生成16...原创 2019-04-12 17:42:35 · 11646 阅读 · 2 评论 -
blowfish加密算法(c实现)
在vs2013的环境下编译并运行成功,并得到了相应的正确结果。blowfish算法是一种对称分组加密算法,其算法执行效率较高,流程非常简洁清晰,密钥是一个动态长度,可在16bit到448bit之间,对密钥的交换和对明文的加密都是用的同一个加密函数BF_Fn,算法首先需要一个用π的小数部分产生的4168字节进行p_box[18]和s_box[4][256]的初始化,然后根据密钥异或产生p_box,...原创 2019-04-12 20:32:24 · 4964 阅读 · 1 评论 -
Base58 加密(c实现)
base58加密与其他base系列不同的是:base64是每6bit位一个映射base32是每5bit位一个映射base16是每bit4位一个映射而base58不是根据bit位而来 而是直接模58而映射的其算法很简单 就是将字符流转成256进制的一个超大数 然后不断的模58最后得到的结果逆序即是结果例如字符串 “abc”组合成256进制即为 256 * (256 * ord(‘a’...原创 2019-04-09 19:42:56 · 2929 阅读 · 0 评论 -
CRC32校验(c实现)
环境:vs2013 成功编译并运行#include <stdio.h>#include <Windows.h>#include <stdlib.h>#pragma warning(disable:4996 )//这样防止警告DWORD Crc32Table[256];//0x04 C1 1D B7DWORD BitReverse(DWORD...原创 2019-04-09 21:19:49 · 3717 阅读 · 0 评论