亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fgintrsa.pas

?? delphi下的Rsa數字證書開發庫相關代碼
?? PAS
字號:
{License, info, etc
 ------------------

This implementation is made by Walied Othman, to contact me
mail to Walied.Othman@Student.KULeuven.ac.be or
Triade@ace.Ulyssis.Student.KULeuven.ac.be,
always mention wether it 's about the FGInt for Delphi or for
FreePascal, or wether it 's about the 6xs, preferably in the subject line.
If you 're going to use these implementations, at least mention my
name or something and notify me so I may even put a link on my page.
This implementation is freeware and according to the coderpunks'
manifesto it should remain so, so don 't use these implementations
in commercial software.  Encryption, as a tool to ensure privacy
should be free and accessible for anyone.  If you plan to use these
implementations in a commercial application, contact me before
doing so, that way you can license the software to use it in commercial
Software.  If any algorithm is patented in your country, you should
acquire a license before using this software.  Modified versions of this
software must contain an acknowledgement of the original author (=me).
This implementaion is available at
http://ace.ulyssis.student.kuleuven.ac.be/~triade/

copyright 2000, Walied Othman
This header may not be removed.
}

Unit FGIntRSA;

Interface

Uses Windows, SysUtils, Controls, FGInt;

Procedure RSAEncrypt(P : String; Var exp, modb : TFGInt; Var E : String);
Procedure RSADecrypt(E : String; Var exp, modb, d_p, d_q, p, q : TFGInt; Var D : String);
Procedure RSASign(M : String; Var d, n, dp, dq, p, q : TFGInt; Var S : String);
Procedure RSAVerify(M, S : String; Var e, n : TFGInt; Var valid : boolean);


Implementation


{$H+}




// Encrypt a string with the RSA algorithm, P^exp mod modb = E

Procedure RSAEncrypt(P : String; Var exp, modb : TFGInt; Var E : String);
Var
   i, j, modbits : longint;
   PGInt, temp, zero : TFGInt;
   tempstr1, tempstr2, tempstr3 : String;
Begin
   Base2StringToFGInt('0', zero);
   FGIntToBase2String(modb, tempstr1);
   modbits := length(tempstr1);
   convertBase256to2(P, tempstr1);
   tempstr1 := '111' + tempstr1;
   j := modbits - 1;
   While (length(tempstr1) Mod j) <> 0 Do tempstr1 := '0' + tempstr1;

   j := length(tempstr1) Div (modbits - 1);
   tempstr2 := '';
   For i := 1 To j Do
   Begin
      tempstr3 := copy(tempstr1, 1, modbits - 1);
      While (copy(tempstr3, 1, 1) = '0') And (length(tempstr3) > 1) Do delete(tempstr3, 1, 1);
      Base2StringToFGInt(tempstr3, PGInt);
      delete(tempstr1, 1, modbits - 1);
      If tempstr3 = '0' Then FGIntCopy(zero, temp) Else FGIntMontgomeryModExp(PGInt, exp, modb, temp);
      FGIntDestroy(PGInt);
      tempstr3 := '';
      FGIntToBase2String(temp, tempstr3);
      While (length(tempstr3) Mod modbits) <> 0 Do tempstr3 := '0' + tempstr3;
      tempstr2 := tempstr2 + tempstr3;
      FGIntdestroy(temp);
   End;

   While (tempstr2[1] = '0') And (length(tempstr2) > 1) Do delete(tempstr2, 1, 1);
   ConvertBase2To256(tempstr2, E);
   FGIntDestroy(zero);
End;


// Decrypt a string with the RSA algorithm, E^exp mod modb = D
// provide nil for exp.Number if you want a speedup by using the chinese
// remainder theorem, modb = p*q, d_p*e mod (p-1) = 1 and
// d_q*e mod (q-1) where e is the encryption exponent used

Procedure RSADecrypt(E : String; Var exp, modb, d_p, d_q, p, q : TFGInt; Var D : String);
Var
   i, j, modbits : longint;
   EGInt, temp, temp1, temp2, temp3, ppinvq, qqinvp, zero : TFGInt;
   tempstr1, tempstr2, tempstr3 : String;
Begin
   Base2StringToFGInt('0', zero);
   FGIntToBase2String(modb, tempstr1);
   modbits := length(tempstr1);
   convertBase256to2(E, tempstr1);
   While copy(tempstr1, 1, 1) = '0' Do delete(tempstr1, 1, 1);
   While (length(tempstr1) Mod modbits) <> 0 Do tempstr1 := '0' + tempstr1;
   If exp.Number = Nil Then
   Begin
      FGIntModInv(q, p, temp1);
      FGIntMul(q, temp1, qqinvp);
      FGIntDestroy(temp1);
      FGIntModInv(p, q, temp1);
      FGIntMul(p, temp1, ppinvq);
      FGIntDestroy(temp1);
   End;

   j := length(tempstr1) Div modbits;
   tempstr2 := '';
   For i := 1 To j Do
   Begin
      tempstr3 := copy(tempstr1, 1, modbits);
      While (copy(tempstr3, 1, 1) = '0') And (length(tempstr3) > 1) Do delete(tempstr3, 1, 1);
      Base2StringToFGInt(tempstr3, EGInt);
      delete(tempstr1, 1, modbits);
      If tempstr3 = '0' Then FGIntCopy(zero, temp) Else
      Begin
         If exp.Number <> Nil Then FGIntMontgomeryModExp(EGInt, exp, modb, temp) Else
         Begin
            FGIntMontgomeryModExp(EGInt, d_p, p, temp1);
            FGIntMul(temp1, qqinvp, temp3);
            FGIntCopy(temp3, temp1);
            FGIntMontgomeryModExp(EGInt, d_q, q, temp2);
            FGIntMul(temp2, ppinvq, temp3);
            FGIntCopy(temp3, temp2);
            FGIntAddMod(temp1, temp2, modb, temp);
            FGIntDestroy(temp1);
            FGIntDestroy(temp2);
         End;
      End;
      FGIntDestroy(EGInt);
      tempstr3 := '';
      FGIntToBase2String(temp, tempstr3);
      While (length(tempstr3) Mod (modbits - 1)) <> 0 Do tempstr3 := '0' + tempstr3;
      tempstr2 := tempstr2 + tempstr3;
      FGIntdestroy(temp);
   End;

   If exp.Number = Nil Then
   Begin
      FGIntDestroy(ppinvq);
      FGIntDestroy(qqinvp);
   End;
   While (Not (copy(tempstr2, 1, 3) = '111')) And (length(tempstr2) > 3) Do delete(tempstr2, 1, 1);
   delete(tempstr2, 1, 3);
   ConvertBase2To256(tempstr2, D);
   FGIntDestroy(zero);
End;


// Sign strings with the RSA algorithm, M^d mod n = S
// provide nil for exp.Number if you want a speedup by using the chinese
// remainder theorem, n = p*q, dp*e mod (p-1) = 1 and
// dq*e mod (q-1) where e is the encryption exponent used


Procedure RSASign(M : String; Var d, n, dp, dq, p, q : TFGInt; Var S : String);
Var
   MGInt, SGInt, temp, temp1, temp2, temp3, ppinvq, qqinvp : TFGInt;
Begin
   Base256StringToFGInt(M, MGInt);
   If d.Number <> Nil Then FGIntMontgomeryModExp(MGInt, d, n, SGInt) Else
   Begin
      FGIntModInv(p, q, temp);
      FGIntMul(p, temp, ppinvq);
      FGIntDestroy(temp);
      FGIntModInv(q, p, temp);
      FGIntMul(q, temp, qqinvp);
      FGIntDestroy(temp);
      FGIntMontgomeryModExp(MGInt, dp, p, temp1);
      FGIntMul(temp1, qqinvp, temp2);
      FGIntCopy(temp2, temp1);
      FGIntMontgomeryModExp(MGInt, dq, q, temp2);
      FGIntMul(temp2, ppinvq, temp3);
      FGIntCopy(temp3, temp2);
      FGIntAddMod(temp1, temp2, n, SGInt);
      FGIntDestroy(temp1);
      FGIntDestroy(temp2);
      FGIntDestroy(ppinvq);
      FGIntDestroy(qqinvp);
   End;
   FGIntToBase256String(SGInt, S);
   FGIntDestroy(MGInt);
   FGIntDestroy(SGInt);
End;


// Verify digitally signed strings with the RSA algorihthm,
// If M = S^e mod n then ok:=true else ok:=false

Procedure RSAVerify(M, S : String; Var e, n : TFGInt; Var valid : boolean);
Var
   MGInt, SGInt, temp : TFGInt;
Begin
   Base256StringToFGInt(S, SGInt);
   Base256StringToFGInt(M, MGInt);
   FGIntMod(MGInt, n, temp);
   FGIntCopy(temp, MGInt);
   FGIntMontgomeryModExp(SGInt, e, n, temp);
   FGIntCopy(temp, SGInt);
   valid := (FGIntCompareAbs(SGInt, MGInt) = Eq);
   FGIntDestroy(SGInt);
   FGIntDestroy(MGInt);
End;

End.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品成人综合色在线婷婷 | 一区二区高清免费观看影视大全| 亚洲日本韩国一区| 免费成人在线网站| 91美女视频网站| 国产午夜亚洲精品午夜鲁丝片| 亚洲无线码一区二区三区| 国产精品888| 日韩午夜三级在线| 亚洲福利视频一区二区| 国产69精品久久久久777| 欧美区一区二区三区| 国产精品久久午夜夜伦鲁鲁| 麻豆91小视频| 欧美猛男gaygay网站| **性色生活片久久毛片| 国产精品1区2区| 日韩欧美资源站| 亚洲成av人片在线观看| 在线看一区二区| 亚洲欧美一区二区三区极速播放 | 亚洲婷婷综合色高清在线| 欧美性大战久久久久久久蜜臀| 国产日韩欧美亚洲| 国产乱子伦视频一区二区三区| 91.成人天堂一区| 日韩精品福利网| 在线观看91精品国产麻豆| 亚洲一区二区三区激情| 不卡av在线网| 中文字幕在线不卡国产视频| yourporn久久国产精品| 中文字幕中文在线不卡住| 懂色av一区二区在线播放| 久久精品人人做人人爽人人| 国精产品一区一区三区mba视频 | 亚洲成av人片在线| 欧美曰成人黄网| 亚洲大尺度视频在线观看| 欧美私人免费视频| 日韩国产成人精品| 日韩亚洲欧美在线| 黑人巨大精品欧美一区| 国产精品欧美一级免费| jlzzjlzz亚洲女人18| 亚洲人成人一区二区在线观看| 日本韩国欧美在线| 日本不卡1234视频| 精品国产乱码久久久久久久| 8x福利精品第一导航| 蜜桃av噜噜一区二区三区小说| 91精品国产综合久久婷婷香蕉 | 久久综合九色综合97婷婷| 国产精品伊人色| 亚洲欧洲成人精品av97| 日本福利一区二区| 蜜芽一区二区三区| 久久久精品国产免费观看同学| 成人午夜视频福利| 亚洲一二三专区| 精品久久五月天| 一本久道久久综合中文字幕| 青青草91视频| 亚洲欧洲色图综合| 日韩一区二区中文字幕| 夫妻av一区二区| 五月天一区二区三区| 欧美激情中文不卡| 5月丁香婷婷综合| 成人午夜av在线| 水蜜桃久久夜色精品一区的特点| 国产亚洲女人久久久久毛片| 欧美主播一区二区三区美女| 国产在线精品一区在线观看麻豆| 亚洲另类中文字| 精品国产百合女同互慰| 91久久精品一区二区| 国产盗摄一区二区| 亚洲成人午夜电影| 国产精品久久久久三级| 91麻豆精品久久久久蜜臀| 成人黄色大片在线观看| 蜜桃视频在线观看一区| 亚洲主播在线观看| 国产欧美日韩卡一| 欧美一区二区三区视频免费播放| 99精品视频一区| 国产99久久久国产精品潘金| 日本va欧美va瓶| 亚洲高清免费视频| 亚洲欧美日韩中文播放| 国产日韩欧美电影| 日韩久久免费av| 欧美日韩精品专区| 色中色一区二区| 99这里只有久久精品视频| 国产麻豆精品在线观看| 久久99久久久久| 日韩高清在线电影| 亚洲国产成人91porn| 中文字幕一区二区在线观看| 欧美成va人片在线观看| 欧美日韩精品综合在线| 欧美在线观看一区二区| 91传媒视频在线播放| 成人免费观看视频| 大美女一区二区三区| 国产一区在线精品| 久久精品免费观看| 另类小说一区二区三区| 奇米在线7777在线精品| 日韩精品电影一区亚洲| 日韩中文字幕区一区有砖一区| 亚洲午夜影视影院在线观看| 亚洲一区二区综合| 亚洲高清视频在线| 午夜视黄欧洲亚洲| 奇米影视一区二区三区| 麻豆精品精品国产自在97香蕉 | 不卡免费追剧大全电视剧网站| 北条麻妃一区二区三区| 国产99久久久国产精品潘金| 成人免费视频网站在线观看| 99久久精品一区二区| 91美女福利视频| 欧美色中文字幕| 91麻豆精品久久久久蜜臀| 日韩免费看网站| 国产日产欧美一区二区视频| 中文字幕视频一区二区三区久| 亚洲激情成人在线| 亚洲国产成人tv| 久久99精品久久久久久国产越南| 国产老女人精品毛片久久| 成人av电影在线观看| 色婷婷综合久色| 日韩一卡二卡三卡| 国产精品久久一卡二卡| 亚洲一区在线观看网站| 青青草一区二区三区| 丁香啪啪综合成人亚洲小说| 91美女片黄在线观看91美女| 制服视频三区第一页精品| 2020国产成人综合网| 成人免费视频在线观看| 日精品一区二区| 豆国产96在线|亚洲| 欧美无砖专区一中文字| 26uuu另类欧美| 亚洲制服丝袜在线| 国产伦精一区二区三区| 欧洲一区二区三区在线| 26uuu亚洲| 亚洲高清在线视频| 国产不卡视频在线观看| 精品污污网站免费看| 久久久精品免费观看| 五月综合激情网| 国产不卡一区视频| 91精品国产麻豆国产自产在线| 亚洲国产精品t66y| 日本午夜一区二区| 一本色道**综合亚洲精品蜜桃冫| 精品久久久久香蕉网| 一区二区三区成人| 国产.精品.日韩.另类.中文.在线.播放| 欧美艳星brazzers| 中文字幕一区二区三区四区不卡 | jiyouzz国产精品久久| 欧美理论在线播放| 18成人在线观看| 国产精品一区2区| 91精品国产91久久久久久一区二区| 国产精品私人影院| 国产一区美女在线| 欧美日韩国产一区| 亚洲黄色尤物视频| 高清国产一区二区三区| 日韩欧美国产1| 日韩精品视频网站| 在线精品视频一区二区三四| 中文字幕日韩欧美一区二区三区| 国产一区高清在线| 精品免费国产一区二区三区四区| 偷拍日韩校园综合在线| 色婷婷国产精品综合在线观看| 国产精品久久久一区麻豆最新章节| 毛片不卡一区二区| 日韩精品在线一区| 日韩av在线免费观看不卡| 欧美日韩国产三级| 亚洲韩国精品一区| 欧美无乱码久久久免费午夜一区 | 成人免费在线播放视频| 成人在线综合网| 国产视频一区二区三区在线观看 | 色哟哟亚洲精品| 亚洲欧美经典视频| 色一情一乱一乱一91av| 一区二区视频在线|