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 算力,解读结果公开显示在下面。

还没有人解读过这个文件。