⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit5.~pas

📁 这是一个delphi程序
💻 ~PAS
字号:
unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CAPICOM_TLB;

const
ConstVal=1;

type
  TForm5 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation

uses comobj;

{$R *.dfm}

procedure TForm5.Button1Click(Sender: TObject);
var
MyStore:TStore;
Cert:Tcertificate;
CertI:TCertificates;
Count_val,Snum_Val:string;
//cert:TCertificateProperties;
certVal:olevariant;
certR:CoCertificates;
Public_val:IPublicKey;

begin
 try
 Cert:=Tcertificate.Create(nil);
 MyStore:=TStore.Create(nil);
 MyStore.Open(CAPICOM_CURRENT_USER_STORE,'MY',CAPICOM_STORE_OPEN_READ_ONLY);
 certVal:=myStore.Certificates[ConstVal];
 //certVal.display;
 certval.PublicKey;
 certval.PublicKey.Length;
 //cert.Display;
 //cert.PublicKey;
 finally
 Cert.Free;
 MyStore.Free;
 end;
end;

procedure TForm5.Button3Click(Sender: TObject);
var
Tcode:TUtilities;
Val:string;
begin
 Tcode:=TUtilities.Create(nil);
 try
 Val:=memo1.Lines.Text;
 //memo2.Lines.Text:=tcode.BinaryToHex(val);
 memo2.Lines.Text:=Tcode.Base64Decode(val);
 finally
 Tcode.Free;
 end;

end;

procedure TForm5.Button4Click(Sender: TObject);
var
OE_Store,OE_Certs,OE_Cert,OE_Private,OE_Util:variant;
Cert:Tcertificate;
PrivateVal:TPrivateKey;
CUtil:TUtilities;
Cer_i,Cer_count,Cert_Select:integer;
Value_Str:pwidestring;
begin
 OE_Private:=createoleobject('CAPICOM.PrivateKey.1');
 OE_Cert:=createoleobject('CAPICOM.Certificate.3');
 OE_Store:=createoleobject('CAPICOM.Store.3');
 
 OE_Util:=createoleobject('CAPICOM.Utilities.1');

 OE_Store.open(CAPICOM_CURRENT_USER_STORE,'MY',CAPICOM_STORE_OPEN_READ_ONLY);
 cer_count:=OE_Store.certificates.count;
 for Cer_i:=1 to Cer_count do
 begin
   OE_Cert:=OE_Store.certificates[Cer_i];
   if OE_Cert.SubjectName='Qian' then
   begin
   OE_Cert:=OE_Store.certificates[Cer_i];
   break;
   end;
 end;
 //if OE_Cert<>nil then
 //begin
// memo2.Lines.Add(OE_Cert.PublicKey.EncodedParameters.Value);
 //memo2.Lines.Add(OE_Cert.PublicKey.EncodedParameters.Format(true));
 //memo2.Lines.Add(OE_Cert.PublicKey.EncodedParameters.Format(true));
 //memo2.Lines.Add(OE_Cert.PublicKey.EncodedKey.format(1));
 //memo2.Lines.Add(OE_Cert.Extensions.Item[1]);
 //showmessage(inttostr(OE_Cert.Extensions.Count));
 // memo2.Lines.Add(OE_Cert.PublicKey.EncodedKey);
 //CAPICOM_ENCODE_BASE64
 //CAPICOM_ENCODE_BINARY
   //CUtil.Base64Decode()
  //cutil.Base64Encode()
 memo2.Lines.Add(OE_Cert.PublicKey.EncodedKey.Value[CAPICOM_ENCODE_BINARY]);
 memo2.Lines.Add('');

 Value_Str:=OE_Util.BinaryToHex(OE_Cert.PublicKey.EncodedKey.Value[CAPICOM_ENCODE_BINARY]);
 memo2.Lines.Add(Value_Str);
 memo2.Lines.Add(inttostr(length(Value_Str)));

 memo2.Lines.Add('');
 memo2.Lines.Add(OE_Cert.PublicKey.EncodedKey.format(1));
 //memo2.Lines.Add(OE_Cert.PublicKey.EncodedKey.Value[CAPICOM_ENCODE_BASE64]);
// memo2.Lines.Add(OE_Util.Base64Decode(OE_Cert.PublicKey.EncodedKey.Value[CAPICOM_ENCODE_BASE64]));


 //memo2.Lines.Add()
 //OE_Private:=OE_Cert.PrivateKey;
 //PrivateVal.FreeInstance

 //PrivateVal.KeySpec;
 //memo2.Lines.Add(OE_Private.KeySpec);
 //memo2.Lines.Add(OE_Private.ProviderName);
 //memo2.Lines.Add(OE_Private.UniqueContainerName);
 //end;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -