免费男女视频_国产系列 视频二区_羞羞视频免费入口网站_久国久产久精永久网页_国产免费观看av_一区二区三区日韩在线观看

c#使用椭圆签名算法制作软件序列号

橢圓曲線密碼學(Elliptic curve cryptography,縮寫為ECC)是基于橢圓曲線數學的一種公鑰密碼的方法。橢圓曲線在密碼學中的使用是在1985年由Neal Koblitz和Victor Miller分別獨立提出的。
橢圓簽名算法應該是微軟最先用在軟件保護上的,我們平常用的25位序列號就是基于橢圓簽名算法的。理論上說,橢圓簽名算法是很難破解的,因為...(省略,感興趣的可以看看《ECC加密算法入門介紹》這篇文章)。但是因為微軟出于序列號長度的考慮,簽名的長度只有62bit(具體是多少,忘了),所以可以暴力計算私鑰。我們用過的算號器就是這樣的。
定義:
橢圓曲線Ep=(p,a,b,G,n,h)
p、a、b 用來確定曲線,G為基點,n為點G的階,h是橢圓曲線上所有點的個數m與n相除的整數部分
簽名過程
1,選擇一條橢圓曲線Ep(a,b),和基點G
2,選擇私有密鑰k(k<n,n為G的階),利用基點G計算公開密鑰K=kG
3,取一個隨機整數r(r<n),計算點R=rG
4,計算特征信息和R的散列值,即Hash=SHA(data,x,y)
5,計算sig≡r-Hash*k(mod n) 
6,使用sig和Hash生成序列號(例如使用BASE24編碼)
驗證過程
1,從序列號中提取sig和Hash
2,計算R≡sig*G+Hash*K (mod p)
3,計算計算特征信息和R的散列值,即H=SHA(data,x,y)
4,比較H和Hash
實際上,上述過程就是Elliptic Curve DSA (ECDSA)。
好吧,言歸正傳,我們如何在c#中使用橢圓簽名算法呢?
在.Net3.5中,微軟提供了ECDsaCng類,但是局限性是必須在Vista系統上才能使用,另外就是微軟的實現事先為我們確定了橢圓曲線的參數(ECDsaP256,ECDsaP384,ECDsaP521),我們沒有辦法使用自己的參數。關于ECDsaCng類的使用,已經有人做了介紹,MSDN里也有說明。這里我要說的是如何使用第三方類庫。
這里介紹的第三方加密類庫是BCCCrypto(http://www.bouncycastle.org/csharp/),現在的版本是1.4,經過測試比較穩定。
簽名

01
02
03
04
05
06
07
08
09
10
11
12
13
14
// 生成R=r*G
  TBCryptoBigInteger r =null;
  Random random =new SecureRandom();
  do // Generate r
  {
      r =new TBCryptoBigInteger(this.ecdomainpsCDKey.N.BitLength, random);
  }
  while (r.SignValue == 0);
  ECPoint R =this.ecdomainpsCDKey.G.Multiply(r);
// Hash = SHA1(data,Rx,Ry)
string hashStr = Sha1(31, rawKeyBytes, R.X.ToBigInteger().ToByteArray(), R.Y.ToBigInteger().ToByteArray());
TBCryptoBigInteger hashInt =new TBCryptoBigInteger(hashStr, 2);
// sig = r-Hash*D (mod n)
TBCryptoBigInteger sig = r.Subtract(hashInt.Multiply(this.ecDCDKey)).Mod(this.ecdomainpsCDKey.N);


驗證

01
02
03
04
05
06
07
08
09
10
11
12
13
// 驗證簽名
  X9ECParameters ecps = X962NamedCurves.GetByOid(X9ObjectIdentifiers.Prime256v1);
  ECPublicKeyParameters pk =new ECPublicKeyParameters("ECDSA",
      ecps.Curve.DecodePoint(Hex.Decode(KeyAttribute.GetKey(type.Assembly))),
      new ECDomainParameters(ecps.Curve, ecps.G, ecps.N, ecps.H));
  ISigner s = SignerUtilities.GetSigner("ECDSA");
  s.Init(false, pk);
  s.BlockUpdate(bytes, 0, dataLen);
  if (s.VerifySignature(sig))
{
     this.data =new byte[dataLen];
     Array.Copy(bytes, 0,this.data, 0, data.Length);
}
主站蜘蛛池模板: 一级做受毛片免费大片 | 做羞羞视频 | 91福利免费视频 | 欧美三级日本三级少妇99 | 欧美日韩国产成人在线 | 欧美一级淫片免费视频黄 | 日本一区视频在线观看 | 激情小说激情图片激情电影 | 毛片视频免费播放 | 日本中文字幕久久 | 亚洲成在人| 午夜视频在线免费 | 91精品国产日韩91久久久久久360 | 日本在线看片 | 欧洲狠狠鲁 | 国产中出视频 | 成人毛片100免费观看 | 久久99久久98精品免观看软件 | 欧美日韩精品不卡一区二区三区 | 久久免费视频一区二区三区 | 国产羞羞视频 | 深夜激情视频 | 2017亚洲男人天堂 | 成码无人av片在线观看网站 | 国产又白又嫩又紧又爽18p | 黄网站进入| 成人在线视频精品 | 小视频在线看 | 91精品成人福利在线播放 | 一色视频 | 午夜精品久久久久久毛片 | 一级黄色毛片播放 | 国产精品视频一区二区三区综合 | 中文字幕一二区 | 国产成人精品无人区一区 | 一级做a爱片性色毛片高清 国产精品色在线网站 | 毛片免费观看完整版 | 北京一级毛片 | 一级看片免费视频 | 一级黄色免费观看 | 91精品国产综合久久婷婷香蕉 |