[密码学] C++ 实现 AES128 加密算法
概述
清理邮箱的时候翻出来的。
很久以前写的,理解加密算法用的,当时记得是还撸了两天晚上撸出来的代码,放上来留个纪念好啦。
补上Tutorial,就当考古吧。
写代码时候毕竟年轻,问题也不少,但现在这东西还能用!
文件link,utf-8编码。
编译
使用gcc编译(g++也可以)即可,需要头文件为:
#include <cstdio>
#include <cstring>
#include <cstdlib>
系统里一般都有的,命令: gcc AES-128.cpp -o aes128。
加密操作
先指定密钥,使用 -k 参数(理论上你可以使用任何大于16Byte的文件作为密钥,反正只读前128bit):
先输入:
./aes128 -k key.txt
然后使用 -e 选择需要加密的文件:
./aes128 -k key.txt -e file2E.data
输出结果为result.aes。
解密操作
还是用-k指定密钥文件,-d 用于解密
./aes128 -k key.txt -d file2D.data
结果还是为result.aes。
字符串
密钥指定都一样,使用-s参数:

同时还会自动保存到result.aes文件中。
解密字符串的话,还是用文件的方式解密哈。
演示
加解密演示视频:
其他问题可以问我。
代码写其实不好,高手指正哈。
[密码学] C++ 实现 AES128 加密算法的更多相关文章
- 密码学基础:AES加密算法
[原创]密码学基础:AES加密算法-密码应用-看雪论坛-安全社区|安全招聘|bbs.pediy.com 目录 基础部分概述: 第一节:AES算法简介 第二节:AES算法相关数学知识 素域简介 扩展域简 ...
- AES128加密算法完整实现
概述 原本想把自己AES加密算法的整个实现过程给详细复述下来,分享给想学习的同学,也方便自己复习,但后来发现该工作量太大,加上作业太多没有过多的时间去写.所以就想把自己在学习的过程中多遇到的好的文章进 ...
- 密码学系列之:Argon2加密算法详解
目录 简介 密钥推导函数key derivation function Password Hashing Competition Argon2算法 Argon2的输入参数 处理流程 简介 Argon2 ...
- 密码学系列之:bcrypt加密算法详解
目录 简介 bcrypt的工作原理 bcrypt算法实现 bcrypt hash的结构 hash的历史 简介 今天要给大家介绍的一种加密算法叫做bcrypt, bcrypt是由Niels Provos ...
- <密码学入门>关于DES加密算法解密算法相关问题
题外话:个人觉得DES加密解密真的是一种过程冗长的方法,S盒,P盒还有各种各样的变换让人眼花缭乱. (一)Feistel密码结构 要先说Feistel密码结构的原因是DES加密过程是和Feistel密 ...
- 非对称加密RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。使用最广泛的是RSA算法
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey).公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密:如果用私 ...
- RSA算法原理——(1)目前常见加密算法简介
艾伦·麦席森·图灵在二战期间主要负责破译德国人的密码系统Enigma,破解密码需要大量的计算,图灵深知工欲善其事必先利其器的道理,于是一台叫作CO-LOSSUS的计算机在1943年被研制出来,后来 ...
- 区块链中的密码学(二)-RSA算法分析和实现
密码学领域中,加密算法主要分为对称加密和非对称加密,随着信息时代安全性要求越来越高,对称加密因为其易被破解的原因逐渐被舍弃.而RSA算法是目前密码学世界中比较流行的非对称加密算法,命名是根据其发明者R ...
- DH、RSA与ElGamal非对称加密算法实现及应用
1.对称加密与非对称加密概述 关于对称加密与非对称加密的概念这里不再多说,感兴趣可以看下我之前的几篇文章,下面说一说两者的主要区别. 对称加密算法数据安全,密钥管理复杂,密钥传递过程复杂,存在密钥泄露 ...
随机推荐
- 【iOS测试】【随笔】帧率FPS评测
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5943263.html 背景 我们的新版App对首页的列 ...
- 关于复选框input[type=checkbox]
关于复选框input[type=checkbox],其实在前面的文章中说过一次,当时主要关注点在设置复选框的状态,利用prop实现,今天继续关注一下复选框. 自己在项目中,遇到一个全选/全不选的需求, ...
- oracle查询某个时间点的数据
1. select * from emps as of timestamp to_Date('2015-12-11 14:00:00','yyyy-mm-dd hh24:mi:ss'),SQL语句是查 ...
- Ms sql 2005 中的bit 数据类型
bit 整型数据 1.0 或 NULL(在表中的表现形式). 注释: 不能对 bit 类型的列使用索引. Microsoft® SQL Server™ 优化用于 bit 列的存储.如果一个表中有不多于 ...
- LeetCode Reverse Vowels of a String
原题链接在这里:https://leetcode.com/problems/reverse-vowels-of-a-string/ 题目: Write a function that takes a ...
- Android pop3与imap方式接收邮件(javamail)
需要下载3个jar包:mail.jar/ activation.jar/ additionnal.jar 1.pop3 /** * 以pop3方式读取邮件,此方法不能读取邮件是否为已读,已 ...
- spark 源码安装
clone 源码 git clone git://github.com/apache/spark.git maven编译源码 国外镜像比较慢,此处修改maven仓库的镜像为阿里云镜像: <mir ...
- Android OnTouchListener 导致 OnClickListener 接收不到消息 无反应
原因是onTouch返回了true把消息给消耗掉了,所以OnClickListener接收不到消息. 解决办法:onTouch返回false
- 发布一款Github博客皮肤
Major是一款基于jekyll的皮肤,没有用hexo,原因是换机器后无法更新博客,但是可以用U盘考环境.总之很麻烦!折腾纠结好久,还是用jekyll!不用发布直接push文章即可,方便快捷.用的放心 ...
- 在Eclipse 中使用tomcat8
最新版本的Eclipse让人不支持 Tomcat 8,该方法让Eclipse能使用Tomcat8 第一步:下载最新版本Eclipse for Java EE 第二步:到WTP downloads pa ...