c#net rsa证书签名加密方aesdes3desrar压缩Word文档格式.docx
- 文档编号:18364813
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:15
- 大小:158.65KB
c#net rsa证书签名加密方aesdes3desrar压缩Word文档格式.docx
《c#net rsa证书签名加密方aesdes3desrar压缩Word文档格式.docx》由会员分享,可在线阅读,更多相关《c#net rsa证书签名加密方aesdes3desrar压缩Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
/summary>
publicclassasapApp
#region参数类型转换
///获取字节值,将字符型转换成字节型【strData:
原字符;
TypeId编码类型1:
Base64编码,2:
UTF8编码,3:
ASCII编码】
publicstaticbyte[]CodingToByte(stringstrData,intTypeId)
try
byte[]byteData;
switch(TypeId)
case1:
byteData=Convert.FromBase64String(strData);
break;
case2:
byteData=System.Text.Encoding.UTF8.GetBytes(strData);
default:
System.Text.ASCIIEncodingByteConverter=newASCIIEncoding();
byteData=ByteConverter.GetBytes(strData);
}
returnbyteData;
catch
byte[]bnull={};
returnbnull;
///获取字符值,将字节型转换成字符型【byteData:
原字节;
publicstaticstringCodingToString(byte[]byteData,intTypeId)
stringstringData;
stringData=System.Convert.ToBase64String(byteData);
stringData=System.Text.Encoding.UTF8.GetString(byteData);
stringData=ByteConverter.GetString(byteData);
returnstringData;
stringbnull="
"
;
#endregion
#region随机key:
64位、128位、192位
///获取随机key【BitType:
位数传入1:
64位/8个字符;
传入2:
128位/16个字符;
传入3:
192位/24个字符;
】
publicstaticbyte[]randomKey(intBitType)
stringtypeName="
inttypeSize=0;
if(BitType==1)
typeName="
DES"
typeSize=64;
if(BitType==2)
TripleDES"
typeSize=128;
if(BitType==3)
3DES"
typeSize=192;
SymmetricAlgorithmsymmProvider=SymmetricAlgorithm.Create(typeName);
symmProvider.KeySize=typeSize;
byte[]bkey=symmProvider.Key;
returnbkey;
byte[]bnull={};
#regionGZip压缩/解压缩字符串
///GZip压缩函数(支持版本:
2.0)
publicstaticstringCompressGZip(byte[]strSource)
if(strSource==null)
thrownewSystem.ArgumentException("
字符串为空!
);
//byte[]buffer=System.Text.Encoding.UTF8.GetBytes(strSource);
byte[]buffer=strSource;
System.IO.MemoryStreamms=newSystem.IO.MemoryStream();
System.IO.Compression.GZipStreamstream=newSystem.IO.Compression.GZipStream(ms,System.IO.Compression.CompressionMode.Compress,true);
stream.Write(buffer,0,buffer.Length);
stream.Close();
byte[]buffer1=ms.ToArray();
ms.Close();
returnConvert.ToBase64String(buffer1,0,buffer1.Length);
//将压缩后的byte[]转换为Base64String
stringbnull="
///Gzip解压缩函数(支持版本:
【参数strSource:
原文;
codeType:
指定编码类型,值1:
Base64,值2:
UTF8】
publicstaticstringDecompressGZip(stringstrSource,intcodeType)
字符串不能为空!
byte[]buffer=Convert.FromBase64String(strSource);
ms.Write(buffer,0,buffer.Length);
ms.Position=0;
System.IO.Compression.GZipStreamstream=newSystem.IO.Compression.GZipStream(ms,System.IO.Compression.CompressionMode.Decompress);
stream.Flush();
intnSize=6000*1024+256;
//字符串不超过6000K
byte[]decompressBuffer=newbyte[nSize];
intnSizeIncept=stream.Read(decompressBuffer,0,nSize);
stringbackStr="
if(codeType==1)
backStr=System.Convert.ToBase64String(decompressBuffer,0,nSizeIncept);
if(codeType==2)
backStr=System.Text.Encoding.UTF8.GetString(decompressBuffer,0,nSizeIncept);
returnbackStr;
//转换为普通的字符串
#region签名算法及摘要
#regionMD5签名
///MD5签名,然后返回string类型签名数据(1:
要签名的参数,2:
编码方式)。
publicstaticstringMD5Signature(stringdataStr,stringcodeType)
System.Security.Cryptography.MD5md5=newSystem.Security.Cryptography.MD5CryptoServiceProvider();
byte[]t=md5.ComputeHash(System.Text.Encoding.GetEncoding(codeType).GetBytes(dataStr));
System.Text.StringBuildersb=newSystem.Text.StringBuilder(32);
for(inti=0;
i<
t.Length;
i++)
sb.Append(t[i].ToString("
x"
).PadLeft(2,'
0'
));
returnsb.ToString();
#regionMD5/SHA1摘要
///MD5摘要,然后返回byte类型摘要数据。
publicstaticbyte[]MD5summary(stringstrSource)
byte[]bSource=System.Text.Encoding.UTF8.GetBytes(strSource);
MD5CryptoServiceProvidermd5=newMD5CryptoServiceProvider();
byte[]result=md5.ComputeHash(bSource);
//摘要值
//stringbackStr=Convert.ToBase64String(result);
returnresult;
///SHA1摘要,然后返回byte类型摘要数据。
publicstaticbyte[]SHA1summary(stringstrSource)
SHA1CryptoServiceProvidersha=newSHA1CryptoServiceProvider();
byte[]HashData=sha.ComputeHash(bSource);
//stringbackStr=Convert.ToBase64String(HashData);
returnHashData;
#region引用证书非对称签名/验签RSA
///引用证书非对称签名/验签RSA-私钥签名【OriginalString:
原文(有中文用utf-8编码的字节);
prikey_path:
证书路径;
CertificatePW:
证书密码;
SignType:
签名摘要类型(1:
MD5,2:
SHA1)】
publicstaticbyte[]CerRSASignature(byte[]OriginalString,stringprikey_path,stringCertificatePW,intSignType)
X509Certificate2x509_Cer1=newX509Certificate2(prikey_path,CertificatePW);
RSACryptoServiceProviderrsapri=(RSACryptoServiceProvider)x509_Cer1.PrivateKey;
RSAPKCS1SignatureFormatterf=newRSAPKCS1SignatureFormatter(rsapri);
byte[]result;
switch(SignType)
f.SetHashAlgorithm("
MD5"
//摘要算法MD5
result=md5.ComputeHash(OriginalString);
SHA1"
//摘要算法SHA1
result=sha.ComputeHash(OriginalString);
byte[]SignData=f.CreateSignature(result);
returnSignData;
///引用证书非对称签名/验签RSA-公钥验签【OriginalString:
SignatureString:
签名字符;
pubkey_path:
publicstaticboolCerRSAVerifySignature(byte[]OriginalString,byte[]SignatureString,stringpubkey_path,stringCertificatePW,intSignType)
X509Certificate2x509_Cer1=newX509Certificate2(pubkey_path,CertificatePW);
RSACryptoServiceProviderrsapub=(RSACryptoServiceProvider)x509_Cer1.PublicKey.Key;
rsapub.ImportCspBlob(rsapub.ExportCspBlob(false));
RSAPKCS1SignatureDeformatterf=newRSAPKCS1SignatureDeformatter(rsapub);
byte[]HashData;
HashData=md5.ComputeHash(OriginalString);
HashData=sha.ComputeHash(OriginalString);
if(f.VerifySignature(HashData,SignatureString))
returntrue;
else
returnfalse;
returnfalse;
#region引用证书非对称加密/解密RSA
///引用证书非对称加密/解密RSA-公钥加密获取密文【DataToEncrypt:
证书密码】
publicstaticbyte[]CerRSAEncrypt(byte[]DataToEncrypt,stringpubkey_path,stringCertificatePW)
byte[]bytes_Cypher_Text=rsapub.Encrypt(DataToEncrypt,false);
returnbytes_Cypher_Text;
///引用证书非对称加密/解密RSA-私钥解密获取原文【DataToDecrypt:
密文;
证书密码】【原文有中文返回字节用utf-8编码转换成字符】
publicstaticbyte[]CerRSADecrypt(byte[]DataToDecrypt,stringprikey_path,stringCertificatePW)
X509Certificate2x509_Cer2=newX509Certificate2(prikey_path,CertificatePW);
RSACryptoServiceProviderrsapri=(RSACryptoServiceProvider)x509_Cer2.PrivateKey;
byte[]bytes_Plain_Text=rsapri.Decrypt(DataToDecrypt,false);
returnbytes_Plain_Text;
#regionDes64Bit对称加密/解密算法
///Des64Bit算法加密字串【DataToEncrypt:
ekey:
随机密码,8个字符】【原文有中文传入的原文字符用utf-8编码转换成字节】
publicstaticbyte[]DesEncrypt(byte[]DataToEncrypt,byte[]ekey)
SymmetricAlgorithmmCSP=newDESCryptoServiceProvider();
ICryptoTransformct;
MemoryStreamms;
CryptoStreamcs;
//向量指定的是:
byte[]eiv={0,0,0,0,0,0,0,0};
byte[]eiv=CodingToByte("
AAAAAAAAAAA="
1);
ct=mCSP.CreateEncryptor(ekey,eiv);
ms=newMemoryStream();
cs=newCryptoStream(ms,ct,CryptoStreamMode.Write);
cs.Write(DataToEncrypt,0,DataToEncrypt.Length);
cs.FlushFinalBlock();
cs.Close();
returnms.ToArray();
///Des64Bit算法解密字串【DataToDecrypt:
随机密码,8个字符】【原文有中文返回字节用utf-8编码转换成字符】
publicstaticbyte[]DesDecrypt(byte[]DataToDecrypt,byte[]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c#net rsa证书签名加密方aesdes3desrar压缩 net rsa 证书 签名 加密 aesdes3desrar 压缩