社区
C#
帖子详情
RSA加密解密
xinuaile2003
2006-12-28 07:26:51
我用RSA对字符串进行加密后,为什么解密后得不到原来的字符串?
...全文
312
4
打赏
收藏
RSA加密解密
我用RSA对字符串进行加密后,为什么解密后得不到原来的字符串?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xinuaile2003
2006-12-28
打赏
举报
回复
结贴
xinuaile2003
2006-12-28
打赏
举报
回复
谢谢fupingzi83(一叶浮萍)这位朋友。
fupingzi83
2006-12-28
打赏
举报
回复
以上是我做的一个例子,成功了,你看下.有问题在说.
fupingzi83
2006-12-28
打赏
举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Security.Cryptography;
///
/// 说明:
///本方法是针对字符串进行加密和解密运算的,由于每次只能针对117个字节进行加密和解密,
///所以,对于较长的字符串要先拆分
///这里在初始化RSACryptoServiceProvider实例时,没有指定密钥的大小,如果要指定,需为1024的倍数
///默认为1024,这样加密的后的字符串的长度为172,如果指定为2048,则为334,如果为3096,则为516
///
namespace SRAMethod
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int iMaxLength = 117;//一次加密的最大字节数
byte[] encryptedData;//加密后的数据
byte[] decryptedData;//解密后的数据
try
{
//生成非对称加密和解密的公钥和私钥的XML,并存储在字符串sKey中
int iKeyLength = 3096;
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(iKeyLength);
string sKey = RSA.ToXmlString(true);
string str = "key: " + sKey + "\n";
RSA.FromXmlString(sKey);//初始化密钥信息
byte[] dataToEncrypt = GenerateBytes();//获取要加密的字符串的二进制信息
int iEncrypt = dataToEncrypt.Length / iMaxLength; //加密要循环的次数
string sEncrypted = "";
for (int i = 0; i < iEncrypt + 1; i++)
{
byte[] buff = new Byte[iMaxLength];
//获取待加密的字节信息buff
if (i == iEncrypt)
{
System.Buffer.BlockCopy(dataToEncrypt, i * iMaxLength, buff, 0, dataToEncrypt.Length - i * iMaxLength);
}
else
{
System.Buffer.BlockCopy(dataToEncrypt, i * iMaxLength, buff, 0, iMaxLength);
}
encryptedData = RSA.Encrypt(buff, false);//加密运算
sEncrypted += Convert.ToBase64String(encryptedData);//把加密后的数据转化为字符串
}
str += "Encrypted buff: " + sEncrypted + '\n';
int iDecryptLength = (iKeyLength / 1024) * 172; //每次需要解密的字节数
int iDecrypt = sEncrypted.Length / iDecryptLength; //解密次数
string sDecrypted = ""; //解密后的字符串
int iByte = (iDecrypt + 1) * iMaxLength;
byte[] bDecrypted = new Byte[iByte]; //解密后的字节信息
for (int i = 0; i < iDecrypt + 1; i++)
{
string sToDecrypted = "";
//把待解密的字符串分段
if (i == iDecrypt)
{
sToDecrypted = sEncrypted.Substring(i * iDecryptLength, sEncrypted.Length - i * iDecryptLength);
}
else
{
sToDecrypted = sEncrypted.Substring(i * iDecryptLength, iDecryptLength);
}
if (sToDecrypted != null && sToDecrypted != "")
{
byte[] bToDecrypt = Convert.FromBase64String(sToDecrypted); //得到待解密的字节信息
decryptedData = RSA.Decrypt(bToDecrypt, false);//解密
System.Buffer.BlockCopy(decryptedData, 0, bDecrypted, i * iMaxLength, decryptedData.Length);//得到解密后的字节信息
}
}
sDecrypted += System.Text.Encoding.Default.GetString(bDecrypted); //得到解密后的字符串
str += "Decrypted buff: " + sDecrypted + '\n';
this.richTextBox1.Text = str;
}
catch (Exception e1)
{
throw e1;
}
}
//***********************************************************************
// 得到加密数据的字节数组
//***********************************************************************
public static byte[] GenerateBytes()
{
//待解密的字符串
string s = "进行填3333###???..,NGCr..,该数组已使用密码增强的密码增强的随机字节进随机字节进行填充RNGCryptoServiceProvide使用密码增强的随机字节r rng = new RNGCryptoServiceProvider() ;该数组已使用密码增强的随机字节进行填充RNGCryptoServiceProvider rng = new随机字节 RNGCryptoServiceProvider() ;随机字节";
//转换为字节数组
byte[] buff = System.Text.Encoding.Default.GetBytes(s);
return buff;
}
}
}
Android
RSA
加密解密
RSA
是目前最有影响力的公钥加密算法。在项目开发中对于一些比较敏感的信息需要对其进行加密处理,我们就可以使用
RSA
这种非对称加密算法来对数据进行加密处理,保证数据的安全。
RSA
加密解密
及
RSA
签名和验证
此Demo包含两个文件,建立一个解决方案,然后建立两个文件,一个为Form,一个为Class,把代码分别复制进去即可
RSA
正确的执行过程:
加密解密
:1、获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥2、加密3、解密签名和验证:签名:1、获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥2、获取待签名的Hash码3、签名其中,1和2的步骤无所谓,在本例中,我们将对tx
使用openssl中的
RSA
加密解密
使用openssl中的
RSA
加密解密
1. 概念理解
RSA
算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 2. openssl中的
RSA
使用 linux控制台下openssl工具的简单使用: 1)安装openssl sudo apt-get install libssl-dev 2)生成一个密钥: openssl gen
rsa
-out test.key 1024 这里-out指定生成文件的,即私钥,后面的1024是生成密钥的长度。 3)op
C++实现
RSA
加密解密
这里写自定义目录标题
RSA
实验要求实验目的实验要求代码BigInteger.h如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
RSA
实验要求 实验目的 要求实现...
C#
111,129
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章