惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - 康国庆--thinkinlove

ubuntu flash 乱码解决 cryptoAPI crypto API 与crypto++(前) ubuntu下使用urllib2 发布一个小的实用工具-机票助手 test scribeFire 抓取网页、以及传输网络文件产生 “1ff8” 串的原因 C#和 C++ 关于exe中导出函数限制的疑惑 中秋节体验Xmanager,vnc - 康国庆--thinkinlove linux (ubuntu) 下双屏显示解决? linux下的pdf乱码解决方法 - 康国庆--thinkinlove 针对curl程序库静态链接的问题解决办法 稳定下来了继续写 - 康国庆--thinkinlove SICP:使我着了魔 - 康国庆--thinkinlove 显示器与程序员的效率 认真学习Lisp、FP - 康国庆--thinkinlove 工作之余的休闲假期 - 康国庆--thinkinlove Glusterfs分析报告
Crypto ++ (cryptopp) 与加密 (1)
康国庆--thinkinlove · 2009-01-26 · via 博客园 - 康国庆--thinkinlove

加密技术

加密技术用于提供以下功能:

机密性。确保数据的保密性。机密性通常是使用加密实现的。可以使用加密算法(使用加密密钥)将明文转换为密文,并使用相应的解密算法将密文转换回明文。对称加密算法使用相同的密钥进行加密和解密,而非对称算法则使用公钥/私钥对。

数据完整性。确保数据免受意外或者故意(恶意)的修改。完整性通常是由消息身份验证代码或哈希值提供的。哈希值是从数据序列导出的固定长度的数值。哈希值用于验证通过非安全通道传送的数据的完整性。可以将收到的数据的哈希值与传送时数据的哈希值进行比较,以确定数据是否被篡改。

身份验证。保证数据来自某一方。数字证书用于提供身份验证。数字签名通常应用于哈希值,因为这些值比它们所代表的源数据小得多。

技术选择

如果需要使用一种方法来验证数据在传输过程中没有被篡改,请使用哈希值。

如果要证明实体知道机密但不来回发送机密,或者想使用简单的哈希值以防止在传输过程中被截获,请使用加密的哈希值。

如果要隐藏通过不安全的媒介发送的数据或者要永久性保留数据,请使用加密。

如果要验证声称是公钥所有者的人员的身份,请使用证书。

如果双方事先共享密钥,请使用对称加密以提高速度。

如果想通过不安全的媒介安全地交换数据,请使用非对称加密。

如果要进行身份验证和实现不可否认性,请使用数字签名。

使用 Salt 值(使用加密技术生成的随机数)以防范字典攻击。

摘自msdn。

openssl 的crypto程序库是目前用的最广泛的。可以到openssl.org 去下载最新的版本,目前应该是 0.98j。 这个网上的资料就比较多了,但是 openssl 依然没有提供 椭圆曲线加密算法和AES的实现。改库编译出来应该是有一个可执行文件,2个动态库。实际上我在使用vc8编译时候还是会有小麻烦的,按照install的指导来配置和编译,在最新的0.98j版本上是过不去的。通过修改生成的makefile可以把相关的路径修正过来,但在其源码中有许多地方vc8的编译器识别出错误字符。我尝试着修改了几处,但是要改的实在太多了,作罢。

Openssl 提供了许多版本的下载,和不同平台、不同编译器的下载。

crypto++ 是另一好的选择。Crypto++有其明显的优点,主要是功能全,统一性好,包括openssl中缺少的AES。

看其名字就知道是用c++写就的。代码最新版本5.5.2,代码中大量的使用了模板技术,作者是戴伟。

Wei Dai's official Crypto++ web site [www.cryptopp.com

注:该站需要爬墙。。。

源代码里面提供了vc8 以及gcc 等主流编译器的编译方式。而且提供了静态库和动态库的选择,这个代码在vc下是静态链接运行时库的,

也就是MT或MTd 这样编译下来的lib 或是dll 都有45MB之多,还好,可以使用静态联入的方式。

 网上的资料实在是不多,代码中有了部分示例程序。

库中的IO部分设计的很有意思,有点像JAVA中的IO流,使用时可以 一直new下去,

(虽然java的io流部分被许多教材引为反模式) 。

Crypto++的基础设施(IO部分)

Code

 像上面这样,source是源,源有很多种比如文件,网络 该库支持跨平台网络通讯的哦!

filter 是过滤器,也可以成为转换器,可以将一个格式转成另一种,等等。。

sink 是容器。 见下面的例子:

Code

 有了上面这部分io使用基础,那么使用该库就少了许多麻烦。剩余部分待续。