社区
云安全
帖子详情
急:如何在windows下用openssl加密socket传输的数据?::在线等待::
happyjsj
2003-11-04 11:19:02
我以前没有接触过加密方面的知识,听别人说用openssl加密最好啦。
可是我不会用,请指教!
谢谢!
...全文
128
6
打赏
收藏
急:如何在windows下用openssl加密socket传输的数据?::在线等待::
我以前没有接触过加密方面的知识,听别人说用openssl加密最好啦。 可是我不会用,请指教! 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bricks
2003-11-06
打赏
举报
回复
我做过, QQ: 171945319
warton
2003-11-05
打赏
举报
回复
当然建议你去openssl.org官方网站
warton
2003-11-05
打赏
举报
回复
http://openssl.126.com/
这里资料很全!
LopezMagic
2003-11-05
打赏
举报
回复
好像有个中国的openssl的网站,叫什么忘了,搜一下china+openssl
都转成了vc project了。
happyjsj
2003-11-04
打赏
举报
回复
没人回答?
高手!!在哪里?
happyjsj
2003-11-04
打赏
举报
回复
给点资料也好啊!
socket
加密
使用
OpenSsl
SSL是Secure
Socket
Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性
传输
。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准,目前已有3.0版本。SSL采用公开密钥技术
java
socket
使用
加密
协议
传输
对象
java
socket
使用
加密
协议
传输
对象
Openssl
给文件
传输
加密
通过
OPENSSL
给需要
传输
的
数据
加密
过程:1,私密配置确认 2,发送私密,客户用私钥
加密
数据
发送过来 3,接收
数据
,解密
安全
Socket
(SSL)
加密
方法
// C/C++, 利用
OpenSSL
库对
Socket
传输
进行安全
加密
(RSA+AES) // 1. 利用RSA安全
传输
AES生成密钥所需的Seed(32字节) // 2. 利用AES_encrypt/AES_decrypt对
Socket
上面的业务
数据
进行AES
加密
/解密 // --- // * 理论上只需要AES就能保证全部流程,但由于AES
加密
所需要的AES-KEY是一个结构 // * 这个一个结构,如果通过网络进行
传输
,就需要对它进行网络编码,
OpenSSL
里面没有现成的API // * 所以就引入RSA来完成首次安全的
传输
,保证Seed不会被窃听 // * 同样,只使用RSA也能完成全部流程,但由于RSA的处理效率比AES低, // * 所以在业务
数据
传输
加密
上还是使用AES // --- // 下面的代码包含了上述
传输
加密
流程所需的所有步骤(
OpenSSL
部分) // 在实际的
Socket
应用开发时,需要将这些步骤插入到Client/Server网络通信的特定阶段 // --- // 为能完成代码的编译和执行,需要先安装
OpenSSL
执行库及开发库 // 以Debian为例,需要安装
openssl
和 libssl-dev // 编译命令: g++ -o rsa-encrypt rsa-encrypt.cpp -lcrypto // --- // 所需的
OpenSSL
主要的API及功能描述 // 1. RSA_generate_key() 随机生成一个RSA密钥对,供RSA
加密
/解密使用 // 2. i2d_RSAPublicKey() 将RSA密钥对里面的公钥提出到一个BUF,用于网络
传输
给对方 // 3. d2i_RSAPublicKey() 将从网络传过来的公钥信息生成一个
加密
使用的RSA(它里面只有公钥) // 4. RSA_public_encrypt() 使用RSA的公钥对
数据
进行
加密
// 5. RSA_private_decrypt() 使用RSA的私钥对
数据
进行
加密
// 6. AES_set_encrypt_key() 根据Seed生成AES密钥对中的
加密
密钥 // 7. AES_set_decrypt_key() 根据Seed生成AES密钥对中的解密密钥 // 8. AES_encrypt() 使用AES
加密
密钥对
数据
进行
加密
// 9. AES_decrypt() 使用AES解密密钥对
数据
进行解密 // --- // 一个典型的安全
Socket
的建立流程, 其实就是如何将Server随机Seed安全发给Client // -- C: Client S:Server // C: RSA_generate_key() --> RSAKey --> i2d_RSAPublicKey(RSAKey) --> RSAPublicKey // C: Send(RSAPublicKey) TO Server // S: Recv() --> RSAPublicKey --> d2i_RSAPublicKey(RSAPublicKey) --> RSAKey // S: Rand() --> Seed --> RSA_public_encrypt(RSAKey, Seed) --> EncryptedSeed // S: Send(EncryptedSeed) TO Client // C: Recv() --> EncryptedSeed --> RSA_private_decrypt(RSAKey, EncryptedSeed) --> Seed // --- 到此, Client和Server已经完成完成
传输
Seed的处理 // --- 后面的流程是它们怎样使用这个Seed来进行业务
数据
的安全
传输
// C: AES_set_encrypt_key(Seed) --> AESEncryptKey // C: AES_set_decrypt_key(Seed) --> AESDecryptKey // S: AES_set_encrypt_key(Seed) --> AESEncryptKey // S: AES_set_decrypt_key(Seed) --> AESDecryptKey // --- Client
传输
数据
给Server // C: AES_encrypt(AESEncryptKey, Data) --> EncryptedData --> Send() --> Server // S: Recv() --> EncryptedData --> AES_decrypt(AESDecryptKey, EncryptedData) --> Data // --- Server
传输
数据
给Client // S: AES_encrypt(AESEncryptKey, Data) --> EncryptedData --> Send() --> Client // C: Recv() --> EncryptedData --> AES_decrypt(AESDecryptKey, EncryptedData) --> Data / ========================================================================================= */
ssl
socket
加密
传输
得用
openssl
生成私钥和证书文件。在
socket
编程时,加入ssl相关功能,达到工业级安全强度。
云安全
4,451
社区成员
4,381
社区内容
发帖
与我相关
我的任务
云安全
云计算 云安全相关讨论
复制链接
扫一扫
分享
社区描述
云计算 云安全相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章