资源简介
SM9.zip
代码片段和文件信息
using System;
using System.Text;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Crypto.Generators;
using Org.BouncyCastle.Math;
using Org.BouncyCastle.Math.EC;
using Org.BouncyCastle.Security; //SecureRandom
using Org.BouncyCastle.Utilities.Encoders;
namespace CTIDTestKit
{
#region SM9工具类函数
public class SM9Tools
{
#region 二次扩域下操作(实一次多项式操作)
//一次多项式相乘【(a * x + b) * (c * x + d) mod (x^2 + 2) mod q】
public static BigInteger[] FxMultiply(BigInteger q BigInteger[] Fxa BigInteger[] Fxb)
{
BigInteger[] Fx = new BigInteger[2];
if (null != Fxa[0] && null != Fxa[1] && null != Fxb[0] && null != Fxb[1])
{
Fx[0] = Fxa[0].Multiply(Fxb[1]).Add(Fxa[1].Multiply(Fxb[0])).Mod(q);
Fx[1] = Fxa[1].Multiply(Fxb[1]).Subtract(BigInteger.Two.Multiply(Fxa[0].Multiply(Fxb[0]))).Mod(q);
}
return Fx;
}
//一次多项式逆【(a * x + b)^-1 mod (x^2 + 2) mod q】
public static BigInteger[] FxInverse(BigInteger q BigInteger[] Fxa)
{
BigInteger[] Fx = new BigInteger[2];
BigInteger temp = null;
if(BigInteger.Zero.CompareTo(Fxa[0]) != 0 && BigInteger.Zero.CompareTo(Fxa[1]) != 0)
{
temp = Fxa[1].Pow(2).Add(BigInteger.Two.Multiply(Fxa[0].Pow(2)).Mod(q)).ModInverse(q);
Fx[0] = (BigInteger.Zero.Subtract(Fxa[0])).Multiply(temp).Mod(q);
Fx[1] = Fxa[1].Multiply(temp).Mod(q);
}
return Fx;
}
//一次多项式与整数相乘【(a * x + b) * n mod (x^2 + 2) mod q】
public static BigInteger[] nFx(BigInteger q BigInteger[] Fxa BigInteger n)
{
BigInteger[] Fx = new BigInteger[2];
Fx[0] = Fxa[0].Multiply(n).Mod(q);
Fx[1] = Fxa[1].Multiply(n).Mod(q);
return Fx;
}
//一次多项式加减【(a * x + b) ± (c * x + d) mod (x^2 + 2) mod q type = true:加法 / type = false:减法】
public static BigInteger[] FxAddSub(BigInteger q BigInteger[] Fxa BigInteger[] Fxb bool type)
{
BigInteger[] Fx = new BigInteger[2];
if (null != Fxa[0] && null != Fxa[1] && null != Fxb[0] && null != Fxb[1])
{
if (type) { Fx[0] = Fxa[0].Add(Fxb[0]).Mod(q); Fx[1] = Fxa[1].Add(Fxb[1]).Mod(q); }
else { Fx[0] = Fxa[0].Subtract(Fxb[0]).Mod(q); Fx[1] = Fxa[1].Subtract(Fxb[1]).Mod(q);}
}
return Fx;
}
#endregion
#region 十二次扩域乘法盒
public static void G12boxik(int a int b ref int i ref BigInteger k)
{
int[] box = { 11 5 8 2 10 4 7 1 9 3 6 0 };
if (box[a] + box[b] < 12) { k = BigInteger.One; } else { k = BigInteger.ValueOf(-2); }
i = Array.IndexOf(box (box[a] + box[b]) % 12)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 43722 2020-09-23 11:56 SM9.cs
文件 10278867 2020-09-07 14:18 GB∕T 38635.2-2020 信息安全技术 SM9标识密码算法 第2部分:算法.pdf
文件 2602857 2020-05-15 20:45 GB∕T 38635.1-2020 信息安全技术 SM9标识密码算法 第1部分:总则.pdf
相关资源
- 淘宝客导购小程序2.0.3多功能版带分销
- myeclipse-2019.4.0_最新破解.rar
- 数据库系统概论第五版课后习题答案
- NET.Reflector.rar
- navicat.zip
-
ESP8266_NONOS_SDK-2.2.1_ba
sed_USARTrevised. - StardockFences3.0.3(FULL+Patch).zip
- 新一代高效视频编码H.265HEVC原理、标
- 百度云管家5.4.3无限速VIP.exe
- 数据结构与算法图解.pdf
- 信号处理引论.pdf
- zw_csharp_ffmpeg_rtsp_demo.zip
- GNSSApplicationsandMethods.pdf
- TimeSat3.1.rar
- 含激活码AOMEIDynamicDiskManager12.zip
- Game.rar42396
- Driver_Windows.zip
- 嗷呜职教云3.3.7.exe
- win7激活UEFI工具.rar
- zw_DiscreteMathematicsandItsApplications7thKen
- UU加速器2.11.1破解版.exe
- fenban.exe
- 思远CMS.zip
- X-CAN安装程序-1.9.zip
- 20161007182439558.NETReactor.rar
- qlv直转mp4破解版.zip
- 百度干净云大神版.7z
- V程序.rar
- 10.FPGA数字信号处理十ASK调制技术.7z
- 黑侠外推蜘蛛池V1.3完整破解版.rar
评论
共有 条评论