我想使用Winapi.Security.Cryptography.Core_IAsymmetricKeyAlgorithmProvider的函数,它有一个IBuffer类型的参数。我不知道如何使用IBuffer或如何向它给予数据。我试着分配g内存并给函数一个pwide字符,但ide已经告诉我这不起作用。我在网上也没有找到任何有用的东西。
Winapi.Security.Cryptography.Core_IAsymmetricKeyAlgorithmProvider
IBuffer
ldfqzlk81#
Winapi.Security.Cryptography包含Windows的 Package 程序。安全性。加密。核心(Windows UWP)请先查看此页面:https://learn.microsoft.com/en-us/uwp/api/windows.security.cryptography.core.asymmetrickeyalgorithmprovider?view=winrt-22621有一个C#应用程序示例演示了如何使用此接口。有关IBuffer的详细信息可以在此页面上找到:https://learn.microsoft.com/en-us/uwp/api/windows.storage.streams.ibuffer?view=winrt-22621如果要使用RSA PKCS1加密,这可能是第一步:
uses System.Win.WinRT, Winapi.WinRT, Winapi.Security.Cryptography, Winapi.Storage.Streams; const KeyLength = 512; var objAlgProv: Core_IAsymmetricKeyAlgorithmProvider; data: TBytes; cleardata, encrypted: IBuffer; key: Core_ICryptographicKey; hs: HSTRING; EncryptedBase64: string; begin data := TEncoding.UTF8.GetBytes('clear text'); objAlgProv := TCore_AsymmetricKeyAlgorithmProvider.OpenAlgorithm(TCore_AsymmetricAlgorithmNames.RsaPkcs1); key := objAlgProv.CreateKeyPair(KeyLength); cleardata := TCryptographicBuffer.CreateFromByteArray(length(data), @data[0]); encrypted := TCore_CryptographicEngine.Encrypt(key, cleardata, nil {IV}); hs := TCryptographicBuffer.EncodeToBase64String(encrypted); EncryptedBase64 := TWindowsString.HStringToString(hs); end;
如果你在把解决方案翻译成 Delphi 时遇到了进一步的麻烦,展示你的代码并解释你需要知道的细节。
1条答案
按热度按时间ldfqzlk81#
Winapi.Security.Cryptography包含Windows的 Package 程序。安全性。加密。核心(Windows UWP)
请先查看此页面:https://learn.microsoft.com/en-us/uwp/api/windows.security.cryptography.core.asymmetrickeyalgorithmprovider?view=winrt-22621
有一个C#应用程序示例演示了如何使用此接口。有关IBuffer的详细信息可以在此页面上找到:
https://learn.microsoft.com/en-us/uwp/api/windows.storage.streams.ibuffer?view=winrt-22621
如果要使用RSA PKCS1加密,这可能是第一步:
如果你在把解决方案翻译成 Delphi 时遇到了进一步的麻烦,展示你的代码并解释你需要知道的细节。