Skip to content

Commit a9d31cd

Browse files
committed
更新版本到2.0.3
1 parent 649f547 commit a9d31cd

15 files changed

+1419
-4
lines changed

Diff for: src/NETCore.Encrypt - 2.0.2.rar

9.42 KB
Binary file not shown.

Diff for: src/NETCore.Encrypt - 2.0.2.tar

62.5 KB
Binary file not shown.

Diff for: src/NETCore.Encrypt - 2.0.2.zip

11.2 KB
Binary file not shown.

Diff for: src/NETCore.Encrypt - 2.0.2/EncryptProvider.cs

+787
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
using NETCore.Encrypt;
5+
using Newtonsoft.Json;
6+
using NETCore.Encrypt.Shared;
7+
8+
namespace NETCore.Encrypt.Extensions
9+
{
10+
public static class EncryptExtensions
11+
{
12+
/// <summary>
13+
/// String MD5 extension
14+
/// </summary>
15+
/// <param name="srcString"></param>
16+
/// <returns></returns>
17+
public static string MD5(this string srcString)
18+
{
19+
Check.Argument.IsNotEmpty(srcString, nameof(srcString));
20+
return EncryptProvider.Md5(srcString);
21+
}
22+
23+
/// <summary>
24+
/// String SHA1 extensions
25+
/// </summary>
26+
/// <param name="srcString"></param>
27+
/// <returns></returns>
28+
public static string SHA1(this string srcString)
29+
{
30+
Check.Argument.IsNotEmpty(srcString, nameof(srcString));
31+
return EncryptProvider.Sha1(srcString);
32+
}
33+
34+
/// <summary>
35+
/// String SHA256 extensions
36+
/// </summary>
37+
/// <param name="srcString"></param>
38+
/// <returns></returns>
39+
public static string SHA256(this string srcString)
40+
{
41+
Check.Argument.IsNotEmpty(srcString, nameof(srcString));
42+
return EncryptProvider.Sha256(srcString);
43+
}
44+
45+
/// <summary>
46+
/// String SHA384 extensions
47+
/// </summary>
48+
/// <param name="srcString"></param>
49+
/// <returns></returns>
50+
public static string SHA384(this string srcString)
51+
{
52+
Check.Argument.IsNotEmpty(srcString, nameof(srcString));
53+
return EncryptProvider.Sha384(srcString);
54+
}
55+
56+
/// <summary>
57+
/// String SHA512 extensions
58+
/// </summary>
59+
/// <param name="srcString"></param>
60+
/// <returns></returns>
61+
public static string SHA512(this string srcString)
62+
{
63+
Check.Argument.IsNotEmpty(srcString, nameof(srcString));
64+
return EncryptProvider.Sha512(srcString);
65+
}
66+
67+
/// <summary>
68+
/// String HMACMD5 extensions
69+
/// </summary>
70+
/// <param name="srcString"></param>
71+
/// <returns></returns>
72+
public static string HMACMD5(this string srcString, string key)
73+
{
74+
Check.Argument.IsNotEmpty(srcString, nameof(srcString));
75+
return EncryptProvider.HMACMD5(srcString, key);
76+
}
77+
78+
/// <summary>
79+
/// String HMACSHA1 extensions
80+
/// </summary>
81+
/// <param name="srcString"></param>
82+
/// <returns></returns>
83+
public static string HMACSHA1(this string srcString, string key)
84+
{
85+
Check.Argument.IsNotEmpty(srcString, nameof(srcString));
86+
return EncryptProvider.HMACSHA1(srcString, key);
87+
}
88+
89+
/// <summary>
90+
/// String HMACSHA1 extensions
91+
/// </summary>
92+
/// <param name="srcString"></param>
93+
/// <returns></returns>
94+
public static string HMACSHA256(this string srcString, string key)
95+
{
96+
Check.Argument.IsNotEmpty(srcString, nameof(srcString));
97+
return EncryptProvider.HMACSHA256(srcString, key);
98+
}
99+
100+
/// <summary>
101+
/// String HMACSHA384 extensions
102+
/// </summary>
103+
/// <param name="srcString"></param>
104+
/// <returns></returns>
105+
public static string HMACSHA384(this string srcString, string key)
106+
{
107+
Check.Argument.IsNotEmpty(srcString, nameof(srcString));
108+
return EncryptProvider.HMACSHA384(srcString, key);
109+
}
110+
111+
/// <summary>
112+
/// String HMACSHA512 extensions
113+
/// </summary>
114+
/// <param name="srcString"></param>
115+
/// <returns></returns>
116+
public static string HMACSHA512(this string srcString, string key)
117+
{
118+
Check.Argument.IsNotEmpty(srcString, nameof(srcString));
119+
return EncryptProvider.HMACSHA512(srcString, key);
120+
}
121+
}
122+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace NETCore.Encrypt.Extensions.Internal
6+
{
7+
internal static class BytesAndStringExtensions
8+
{
9+
/// <summary>
10+
/// byte to hex string extension
11+
/// </summary>
12+
/// <param name="bytes"></param>
13+
/// <returns></returns>
14+
internal static string ToHexString(this byte[] bytes)
15+
{
16+
StringBuilder sb = new StringBuilder();
17+
for (int i = 0; i < bytes.Length; i++)
18+
{
19+
sb.Append(bytes[i].ToString("X2"));
20+
}
21+
return sb.ToString();
22+
}
23+
24+
/// <summary>
25+
/// hex string to byte extension
26+
/// </summary>
27+
/// <param name="hex"></param>
28+
/// <returns></returns>
29+
internal static byte[] ToBytes(this string hex)
30+
{
31+
if (hex.Length == 0)
32+
{
33+
return new byte[] { 0 };
34+
}
35+
if (hex.Length % 2 == 1)
36+
{
37+
hex = "0" + hex;
38+
}
39+
byte[] result = new byte[hex.Length / 2];
40+
for (int i = 0; i < hex.Length / 2; i++)
41+
{
42+
result[i] = byte.Parse(hex.Substring(2 * i, 2), System.Globalization.NumberStyles.AllowHexSpecifier);
43+
}
44+
return result;
45+
}
46+
}
47+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Threading.Tasks;
5+
using System.Security.Cryptography;
6+
using System.Xml;
7+
using Newtonsoft.Json;
8+
using NETCore.Encrypt.Shared;
9+
using NETCore.Encrypt.Internal;
10+
11+
namespace NETCore.Encrypt.Extensions.Internal
12+
{
13+
/// <summary>
14+
/// RSA参数格式化扩展
15+
/// </summary>
16+
internal static class RSAKeyExtensions
17+
{
18+
#region JSON
19+
/// <summary>
20+
/// RSA导入key
21+
/// </summary>
22+
/// <param name="rsa">RSA实例<see cref="RSA"/></param>
23+
/// <param name="jsonString">RSA的Key序列化JSON字符串</param>
24+
internal static void FromJsonString(this RSA rsa, string jsonString)
25+
{
26+
Check.Argument.IsNotEmpty(jsonString, nameof(jsonString));
27+
28+
RSAParameters parameters = new RSAParameters();
29+
try
30+
{
31+
var paramsJson = JsonConvert.DeserializeObject<RSAParametersJson>(jsonString);
32+
33+
parameters.Modulus = paramsJson.Modulus != null ? Convert.FromBase64String(paramsJson.Modulus) : null;
34+
parameters.Exponent = paramsJson.Exponent != null ? Convert.FromBase64String(paramsJson.Exponent) : null;
35+
parameters.P = paramsJson.P != null ? Convert.FromBase64String(paramsJson.P) : null;
36+
parameters.Q = paramsJson.Q != null ? Convert.FromBase64String(paramsJson.Q) : null;
37+
parameters.DP = paramsJson.DP != null ? Convert.FromBase64String(paramsJson.DP) : null;
38+
parameters.DQ = paramsJson.DQ != null ? Convert.FromBase64String(paramsJson.DQ) : null;
39+
parameters.InverseQ = paramsJson.InverseQ != null ? Convert.FromBase64String(paramsJson.InverseQ) : null;
40+
parameters.D = paramsJson.D != null ? Convert.FromBase64String(paramsJson.D) : null;
41+
}
42+
catch
43+
{
44+
throw new Exception("Invalid Json RSA key.");
45+
}
46+
rsa.ImportParameters(parameters);
47+
}
48+
49+
/// <summary>
50+
/// 获取RSA Key序列化Json
51+
/// </summary>
52+
/// <param name="rsa">RSA实例<see cref="RSA"/></param>
53+
/// <param name="includePrivateParameters">是否包含私钥</param>
54+
/// <returns></returns>
55+
internal static string ToJsonString(this RSA rsa, bool includePrivateParameters)
56+
{
57+
RSAParameters parameters = rsa.ExportParameters(includePrivateParameters);
58+
59+
var parasJson = new RSAParametersJson()
60+
{
61+
Modulus = parameters.Modulus != null ? Convert.ToBase64String(parameters.Modulus) : null,
62+
Exponent = parameters.Exponent != null ? Convert.ToBase64String(parameters.Exponent) : null,
63+
P = parameters.P != null ? Convert.ToBase64String(parameters.P) : null,
64+
Q = parameters.Q != null ? Convert.ToBase64String(parameters.Q) : null,
65+
DP = parameters.DP != null ? Convert.ToBase64String(parameters.DP) : null,
66+
DQ = parameters.DQ != null ? Convert.ToBase64String(parameters.DQ) : null,
67+
InverseQ = parameters.InverseQ != null ? Convert.ToBase64String(parameters.InverseQ) : null,
68+
D = parameters.D != null ? Convert.ToBase64String(parameters.D) : null
69+
};
70+
71+
return JsonConvert.SerializeObject(parasJson);
72+
}
73+
#endregion
74+
75+
#region XML
76+
77+
/// <summary>
78+
/// RSA导入key
79+
/// </summary>
80+
/// <param name="rsa">RSA实例<see cref="RSA"/></param>
81+
/// <param name="jsonString">RSA的Key序列化XML字符串</param>
82+
public static void FromLvccXmlString(this RSA rsa, string xmlString)
83+
{
84+
RSAParameters parameters = new RSAParameters();
85+
86+
XmlDocument xmlDoc = new XmlDocument();
87+
xmlDoc.LoadXml(xmlString);
88+
89+
if (xmlDoc.DocumentElement.Name.Equals("RSAKeyValue"))
90+
{
91+
foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes)
92+
{
93+
switch (node.Name)
94+
{
95+
case "Modulus": parameters.Modulus = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
96+
case "Exponent": parameters.Exponent = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
97+
case "P": parameters.P = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
98+
case "Q": parameters.Q = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
99+
case "DP": parameters.DP = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
100+
case "DQ": parameters.DQ = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
101+
case "InverseQ": parameters.InverseQ = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
102+
case "D": parameters.D = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
103+
}
104+
}
105+
}
106+
else
107+
{
108+
throw new Exception("Invalid XML RSA key.");
109+
}
110+
111+
rsa.ImportParameters(parameters);
112+
}
113+
114+
/// <summary>
115+
/// 获取RSA Key序列化XML
116+
/// </summary>
117+
/// <param name="rsa">RSA实例<see cref="RSA"/></param>
118+
/// <param name="includePrivateParameters">是否包含私钥</param>
119+
/// <returns></returns>
120+
public static string ToLvccXmlString(this RSA rsa, bool includePrivateParameters)
121+
{
122+
RSAParameters parameters = rsa.ExportParameters(includePrivateParameters);
123+
124+
return string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent><P>{2}</P><Q>{3}</Q><DP>{4}</DP><DQ>{5}</DQ><InverseQ>{6}</InverseQ><D>{7}</D></RSAKeyValue>",
125+
parameters.Modulus != null ? Convert.ToBase64String(parameters.Modulus) : null,
126+
parameters.Exponent != null ? Convert.ToBase64String(parameters.Exponent) : null,
127+
parameters.P != null ? Convert.ToBase64String(parameters.P) : null,
128+
parameters.Q != null ? Convert.ToBase64String(parameters.Q) : null,
129+
parameters.DP != null ? Convert.ToBase64String(parameters.DP) : null,
130+
parameters.DQ != null ? Convert.ToBase64String(parameters.DQ) : null,
131+
parameters.InverseQ != null ? Convert.ToBase64String(parameters.InverseQ) : null,
132+
parameters.D != null ? Convert.ToBase64String(parameters.D) : null);
133+
}
134+
135+
#endregion
136+
}
137+
}

Diff for: src/NETCore.Encrypt - 2.0.2/Internal/AESKey.cs

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace NETCore.Encrypt.Internal
6+
{
7+
public class AESKey
8+
{
9+
/// <summary>
10+
/// ase key
11+
/// </summary>
12+
public string Key { get; set; }
13+
14+
/// <summary>
15+
/// ase IV
16+
/// </summary>
17+
public string IV { get; set; }
18+
}
19+
}

Diff for: src/NETCore.Encrypt - 2.0.2/Internal/RSAKey.cs

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace NETCore.Encrypt.Internal
6+
{
7+
public class RSAKey
8+
{
9+
/// <summary>
10+
/// Rsa public key
11+
/// </summary>
12+
public string PublicKey { get; set; }
13+
14+
/// <summary>
15+
/// Rsa private key
16+
/// </summary>
17+
public string PrivateKey { get; set; }
18+
19+
/// <summary>
20+
/// Rsa public key Exponent
21+
/// </summary>
22+
public string Exponent { get; set; }
23+
24+
/// <summary>
25+
/// Rsa public key Modulus
26+
/// </summary>
27+
public string Modulus { get; set; }
28+
}
29+
}
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Threading.Tasks;
5+
6+
namespace NETCore.Encrypt.Internal
7+
{
8+
internal class RSAParametersJson
9+
{
10+
//Public key Modulus
11+
public string Modulus { get; set; }
12+
//Public key Exponent
13+
public string Exponent { get; set; }
14+
15+
public string P { get; set; }
16+
17+
public string Q { get; set; }
18+
19+
public string DP { get; set; }
20+
21+
public string DQ { get; set; }
22+
23+
public string InverseQ { get; set; }
24+
25+
public string D { get; set; }
26+
}
27+
}

Diff for: src/NETCore.Encrypt - 2.0.2/Internal/RsaKeyType.cs

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace NETCore.Encrypt.Internal
6+
{
7+
public enum RsaKeyType
8+
{
9+
XML,
10+
JSON
11+
}
12+
}

0 commit comments

Comments
 (0)