DTcms.API/DTcms.API.Payment.alipaymb/RSAFromPkcs8.cs
(开头部分) 10KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace DTcms.API.Payment.alipaymb
{
public sealed class RSAFromPkcs8
{
public static string sign(string content, string privateKey, string input_charset)
{
System.Text.Encoding code = System.Text.Encoding.GetEncoding(input_charset);
byte[] Data = code.GetBytes(content);
System.Security.Cryptography.RSACryptoServiceProvider rsa = RSAFromPkcs8.DecodePemPrivateKey(privateKey);
System.Security.Cryptography.SHA1 sh = new System.Security.Cryptography.SHA1CryptoServiceProvider();
byte[] signData = rsa.SignData(Data, sh);
return System.Convert.ToBase64String(signData);
}
public static bool verify(string content, string signedString, string publicKey, string input_charset)
{
System.Text.Encoding code = System.Text.Encoding.GetEncoding(input_charset);
byte[] Data = code.GetBytes(content);
byte[] data = System.Convert.FromBase64String(signedString);
System.Security.Cryptography.RSAParameters paraPub = RSAFromPkcs8.ConvertFromPublicKey(publicKey);
System.Security.Cryptography.RSACryptoServiceProvider rsaPub = new System.Security.Cryptography.RSACryptoServiceProvider();
rsaPub.ImportParameters(paraPub);
System.Security.Cryptography.SHA1 sh = new System.Security.Cryptography.SHA1CryptoServiceProvider();
return rsaPub.VerifyData(Data, sh, data);
}
public static string decryptData(string resData, string privateKey, string input_charset)
{
byte[] DataToDecrypt = System.Convert.FromBase64String(resData);
System.Collections.Generic.List<byte> result = new System.Collections.Generic.List<byte>();
for (int i = 0; i < DataToDecrypt.Length / 128; i++)
{
byte[] buf = new byte[128];
for (int j = 0; j < 128; j++)
{
buf[j] = DataToDecrypt[j + 128 * i];
}
result.AddRange(RSAFromPkcs8.decrypt(buf, privateKey, input_charset));
}
byte[] source = result.ToArray();
char[] asciiChars = new char[System.Text.Encoding.GetEncoding(input_charset).GetCharCount(source, 0, source.Length)];
System.Text.Encoding.GetEncoding(input_charset).GetChars(source, 0, source.Length, asciiChars, 0);
return new string(asciiChars);
}
private static byte[] decrypt(byte[] data, string privateKey, string input_charset)
{
System.Security.Cryptography.RSACryptoServiceProvider rsa = RSAFromPkcs8.DecodePemPrivateKey(privateKey);
System.Security.Cryptography.SHA1 sh = new System.Security.Cryptography.SHA1CryptoServiceProvider();
return rsa.Decrypt(data, false);
}
private static System.Security.Cryptography.RSACryptoServiceProvider DecodePemPrivateKey(string pemstr)
{
后面还有 324 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。