rt,尝试使用htmlfile方法,代码如下,但是会报自动化错误,帮忙看下是什么问题以及如何解决:
Sub a3()
a = "你好"
Set oDom = CreateObject("htmlfile")
Set oWindow = oDom.parentWindow
oWindow.execScript "function encryptByRSA(message){var encrypt = new JSEncrypt();encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSGzsEzw5f85xQW8hbs46Tc/+5d+tOKO5nYaUnb4ViOCDUg8NziZ3oyj4gh3E7oqFP7eX6Wt2wqUQJ0YbnBfkPvqezCLMeefWBfquxhykuKU1E3wicDjvy8HI/oAOvZm2ytvI2+iEYSmAJZCQaqsrF9B+M0KoXaC2Nutq/1EfFpQIDAQAB');var encrypted = encrypt.encrypt(message);return encrypted;}"
MsgBox oWindow.eval("encryptByRSA(" & a & ")") '
End Sub
Microsoft HTML Object Library你是已经确认添加过了吗,信任中心还需要对所有宏启用
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
根据您提供的代码,您尝试在 VBA 中使用 htmlfile
方法来执行 RSA 公钥加密。然而,您遇到了自动化错误。这可能是由于安全设置或对象引用问题引起的。要解决这个问题,您可以尝试以下几点:
htmlfile
对象和相关方法。请注意,使用 htmlfile
方法进行 RSA 加密是一种非常特殊的方法,需要依赖于浏览器对象模型。在 VBA 中实现 RSA 加密的更常见方法是使用基于数学算法的库或组件。
如果您希望在 VBA 中进行 RSA 加密,我建议您考虑使用第三方库或组件,例如 CryptoAPI,或者使用其他编程语言(如Python)编写 RSA 加密的功能,并通过 VBA 调用该功能。
在VBA中直接进行RSA加密可能会比较困难,因为VBA本身并没有提供RSA加密的内置功能。不过,您可以使用一些第三方库或组件来实现RSA加密。
以下是一个示例,使用Chilkat Crypt库来进行RSA加密的代码:
Sub RSAEncryptionExample()
Dim rsa As New Chilkat.CkRsa
Dim publicKey As String
Dim encryptedText As String
Dim decryptedText As String
' 设置公钥
publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSGzsEzw5f85xQW8hbs46Tc/+5d+tOKO5nYaUnb4ViOCDUg8NziZ3oyj4gh3E7oqFP7eX6Wt2wqUQJ0YbnBfkPvqezCLMeefWBfquxhykuKU1E3wicDjvy8HI/oAOvZm2ytvI2+iEYSmAJZCQaqsrF9B+M0KoXaC2Nutq/1EfFpQIDAQAB"
' 加载公钥
rsa.UnlockComponent "your_unlock_code"
rsa.ImportPublicKey publicKey
' 要加密的明文
Dim plainText As String
plainText = "Hello, World!"
' 进行RSA加密
encryptedText = rsa.EncryptStringENC(plainText, False)
' 输出加密后的结果
MsgBox encryptedText
' 进行RSA解密(可选)
decryptedText = rsa.DecryptStringENC(encryptedText, False)
' 输出解密后的结果
MsgBox decryptedText
End Sub
请注意,上述示例使用了 Chilkat Crypt 组件,您需要先安装该组件,并在代码中替换 "your_unlock_code"
为您的有效解锁码。您可以从 Chilkat 官方网站获取该组件。
这只是一个示例,具体实现可能会根据您使用的组件或库而有所不同。建议您根据您所选择的组件或库的文档和示例代码进行操作。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
参考gpt:
结合自己分析给你如下建议:
发现你可能遇到了一个常见的问题,就是 htmlfile 对象不支持中文字符的加密。你可以尝试用以下方法解决:
在你的代码中,把 a = “你好” 改成 a = ChrW(20320) & ChrW(22909) ,这样就可以用 Unicode 编码表示中文字符。
在你的 execScript 函数中,把 encryptByRSA(message) 改成 encryptByRSA(unescape(encodeURIComponent(message))) ,这样就可以用 escape 和 unescape 函数对中文字符进行编码和解码。
在你的 eval 函数中,把 encryptByRSA(" & a & ") 改成 encryptByRSA(a) ,这样就可以直接传递变量 a 而不是字符串。
修改后的代码如下:
Sub a3() a = ChrW(20320) & ChrW(22909) Set oDom = CreateObject(“htmlfile”) Set oWindow = oDom.parentWindow oWindow.execScript “function encryptByRSA(message){var encrypt = new JSEncrypt();encrypt.setPublicKey(‘MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSGzsEzw5f85xQW8hbs46Tc/+5d+tOKO5nYaUnb4ViOCDUg8NziZ3oyj4gh3E7oqFP7eX6Wt2wqUQJ0YbnBfkPvqezCLMeefWBfquxhykuKU1E3wicDjvy8HI/oAOvZm2ytvI2+iEYSmAJZCQaqsrF9B+M0KoXaC2Nutq/1EfFpQIDAQAB’);var encrypted = encrypt.encrypt(unescape(encodeURIComponent(message)));return encrypted;}”
MsgBox oWindow.eval(“encryptByRSA(a)”) ’ End Sub
MsgBox oWindow.eval("encryptByRSA("" & a & "")")
您的代码存在几个问题,我将逐一解释并提供修正建议:
Set oDom = CreateObject("htmlfile")
创建了一个 htmlfile
对象,但并没有在内存中打开一个HTML文件。htmlfile
对象是一个特殊的对象,通常用于在内存中处理HTML和JavaScript。Set oWindow = oDom.parentWindow
这行代码有问题。因为 htmlfile
对象实际上没有 parentWindow
属性。这可能是您报自动化错误的原因。oWindow.execScript "function encryptByRSA(message){var encrypt = new JSEncrypt();encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSGzsEzw5f85xQW8hbs46Tc/+5d+tOKO5nYaUnb4ViOCDUg8NziZ3oyj4gh3E7oqFP7eX6Wt2wqUQJ0YbnBfkPvqezCLMeefWBfquxhykuKU1E3wicDjvy8HI/oAOvZm2ytvI2+iEYSmAJZCQaqsrF9B+M0KoXaC2Nutq/1EfFpQIDAQAB');var encrypted = encrypt.encrypt(message);return encrypted;}"
这行代码创建了一个名为 encryptByRSA
的函数,但是这个函数只在 execScript
执行的环境中有效,无法在VBA中直接调用。MsgBox oWindow.eval("encryptByRSA(" & a & ")")
这行代码尝试调用 encryptByRSA
函数并显示结果,但是因为 encryptByRSA
函数在 oWindow.eval
的执行环境中,所以VBA无法识别这个函数。要解决这个问题,我建议使用VBA的COM桥接来调用JavaScript代码。请参考以下修正后的代码:
Sub a3()
Dim oDom As Object
Set oDom = CreateObject("ScriptControl")
oDom.Language = "JScript"
Dim result As String
result = oDom.Eval("function encryptByRSA(message){var encrypt = new JSEncrypt();encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSGzsEzw5f85xQW8hbs46Tc/+5d+tOKO5nYaUnb4ViOCDUg8NziZ3oyj4gh3E7oqFP7eX6Wt2wqUQJ0YbnBfkPvqezCLMeefWBfquxhykuKU1E3wicDjvy8HI/oAOvZm2ytvI2+iEYSmAJZCQaqsrF9B+M0KoXaC2Nutq/1EfFpQIDAQAB');var encrypted = encrypt.encrypt(message);return encrypted;} return encryptByRSA('" & "你好" & "');")
MsgBox result
End Sub
注意:这段代码需要在启用COM桥接的环境中运行,否则会报错。另外,因为加密需要密钥,请确保将 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSGzsEzw5f85xQW8hbs46Tc/+5d+tOKO5nYaUnb4ViOCDUg8NziZ3oyj4gh3E7oqFP7eX6Wt2wqUQJ0YbnBfkPvqezCLMeefWBfquxhykuKU1E3wicDjvy8HI/oAOvZm2ytvI2+iEYSmAJZCQaqsrF9B+M0KoXaC2Nutq/1EfFpQIDAQAB' 替换为您的RSA公钥。
援引讯飞星火:
从代码中可以看出,你尝试使用HTMLFile对象来执行JavaScript代码,但是遇到了自动化错误。这可能是因为你没有正确地设置HTMLFile对象的相关属性。请尝试以下修改后的代码:
Sub a3()
Dim a As String
a = "你好"
Dim oDom As Object
Set oDom = CreateObject("htmlfile")
oDom.Open
oDom.Write "<script>function encryptByRSA(message){var encrypt = new JSEncrypt();encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSGzsEzw5f85xQW8hbs46Tc/+5d+tOKO5nYaUnb4ViOCDUg8NziZ3oyj4gh3E7oqFP7eX6Wt2wqUQJ0YbnBfkPvqezCLMeefWBfquxhykuKU1E3wicDjvy8HI/oAOvZm2ytvI2+iEYSmAJZCQaqsrF9B+M0KoXaC2Nutq/1EfFpQIDAQAB');var encrypted = encrypt.encrypt(message);return encrypted;}</script>"
oDom.Close
MsgBox oDom.documentElement.innerHTML
End Sub
这段代码首先创建了一个HTMLFile对象,然后打开它以便写入内容。接下来,我们将JavaScript代码作为字符串写入HTML文件,并关闭文件。最后,我们使用MsgBox
显示HTML文件的内容。这样,你应该可以看到加密后的文本。
如果你只是想执行JavaScript代码,可以考虑直接在HTML页面中运行,而不是通过VBScript。这可能更安全,而且不会涉及到COM对象的创建。
看起来你的代码中可能存在一些问题。
"htmlfile"
对象并不是标准的VBA对象,你需要使用"MSXML2.DOMDocument"
来代替。JSEncrypt
库来进行RSA加密,但是VBA并不支持直接使用这个库。你需要找到一个适合VBA的RSA加密库。a
变量没有被正确的引用。我提供一种可能的解决方案,但可能需要一些调整以适应你的具体需求。
首先,你需要找到一个适合VBA的RSA加密库。你可以尝试使用RSA.js
或者CryptoJS
这样的库,但是需要将它们转换为VBA可以使用的格式。
然后,你可以使用VBA的XMLHTTP
或者MSXML2
库来调用网页中的JavaScript代码。这里是一个基本的例子:
Sub CallJSFunction()
Dim html As MSHTML.HTMLDocument
Dim scriptFunc As String
Dim url As String
Dim xmlHttp As MSXML2.XMLHTTP60
Dim result As String
' 创建一个新的MSXML2对象
Set xmlHttp = New MSXML2.XMLHTTP60
' 定义要调用的JavaScript函数和参数
scriptFunc = "functionName(" & "arg1, arg2, arg3" & ")"
' 设置URL,这应该是包含你的JavaScript函数的网页的URL
url = "http://example.com/your-javascript.js"
' 发送请求并等待响应
xmlHttp.Open "GET", url, False
xmlHttp.send
' 等待响应完成
Do While xmlHttp.readyState <> 4: DoEvents: Loop
' 获取响应的文本,然后执行JavaScript函数
html.body.innerHTML = xmlHttp.responseText
result = EvaluateScript(html, scriptFunc)
End Sub
Function EvaluateScript(html As MSHTML.HTMLDocument, scriptFunc As String) As String
Dim scriptElement As MSHTML.IHTMLElement
Dim scriptCode As String
Dim scriptResult As String
' 找到包含脚本的元素并获取脚本代码
For Each scriptElement In html.getElementsByTagName("script")
If scriptElement.innerText Like "*" & scriptFunc & "*" Then
scriptCode = scriptElement.innerText
Exit For
End If
Next scriptElement
' 如果找不到脚本,返回一个错误消息
If scriptCode = "" Then
EvaluateScript = "Script function not found" & scriptFunc & "'"
Exit Function
End If
' 执行脚本并获取结果
Set eval = html.parentWindow.eval(scriptCode)
scriptResult = eval
' 将结果转换为字符串并返回
EvaluateScript = CStr(scriptResult)
End Function
这个例子中,EvaluateScript
函数会查找包含指定函数名的脚本元素,然后执行该函数并返回结果。注意,这只是一个基本的例子,实际使用时可能需要根据你的需求进行修改。
引用 皆我百晓生 小程序回复内容作答:
在使用VBA编写RSA公钥加密时,报错“自动化错误”可能是因为没有正确引用相关的JavaScript库。在这个代码中,使用了JSEncrypt库来进行加密,所以需要正确引用该库。
要解决这个问题,您可以尝试以下步骤:
以下是修改后的代码示例:
Sub a3()
a = "你好"
' 创建htmlfile对象
Set oDom = CreateObject("htmlfile")
' 获取parentWindow对象
Set oWindow = oDom.parentWindow
' 在VBA中注入JSEncrypt库
' 请将下面的库路径修改为您JSEncrypt库的实际路径
oWindow.execScript "var oScript=document.createElement('script');oScript.src='C:\path\to\JSEncrypt.js';document.body.appendChild(oScript)"
' 执行加密函数
oWindow.execScript "function encryptByRSA(message){var encrypt = new JSEncrypt();encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSGzsEzw5f85xQW8hbs46Tc/+5d+tOKO5nYaUnb4ViOCDUg8NziZ3oyj4gh3E7oqFP7eX6Wt2wqUQJ0YbnBfkPvqezCLMeefWBfquxhykuKU1E3wicDjvy8HI/oAOvZm2ytvI2+iEYSmAJZCQaqsrF9B+M0KoXaC2Nutq/1EfFpQIDAQAB');var encrypted = encrypt.encrypt(message);return encrypted;}"
' 调用加密函数并显示结果
MsgBox oWindow.eval("encryptByRSA(""" & a & """)")
End Sub
请注意,您需要将'C:\path\to\JSEncrypt.js'
改为您保存JSEncrypt库的实际路径。
希望能帮到您!
题主,这个问题我来替你解决,若有帮助,还望采纳,点击回答右侧采纳即可。
这个代码的问题可能是因为JSEncrypt库无法在HTML文件中执行。解决方案是将JSEncrypt库的JavaScript代码复制到VBA代码中,然后将其插入到oDom中。以下是修改后的代码:
Sub a3()
a = "你好"
Set oDom = CreateObject("htmlfile")
Set oWindow = oDom.parentWindow
jse = "var JSEncrypt = function() { this.setPublicKey = function(key) { this.key = key; }; this.encrypt = function(message) { var rsa = new RSAKey(); rsa.setPublic(this.key, '10001'); return hex2b64(rsa.encrypt(message)); }; };"
oWindow.execScript jse
EncFunc = "function encryptByRSA(message){var encrypt = new JSEncrypt();encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSGzsEzw5f85xQW8hbs46Tc/+5d+tOKO5nYaUnb4ViOCDUg8NziZ3oyj4gh3E7oqFP7eX6Wt2wqUQJ0YbnBfkPvqezCLMeefWBfquxhykuKU1E3wicDjvy8HI/oAOvZm2ytvI2+iEYSmAJZCQaqsrF9B+M0KoXaC2Nutq/1EfFpQIDAQAB');var encrypted = encrypt.encrypt(message);return encrypted;}"
oWindow.execScript EncFunc
MsgBox oWindow.eval("encryptByRSA('" & a & "')")
End Sub
这应该可以解决自动化错误问题。
函数定义和执行函数要分开
结合GPT给出回答如下请题主参考
根据提供的代码,发现其中存在一个语法错误:CreateObject("htmlfi 少写了一个“le”,应该是CreateObject("htmlfile")。
此外,要使用htmlfile方法进行RSA加密,还需要借助JavaScript,可以使用以下代码:
Sub RSACrypto()
' 设置加密文本
text = "hello world"
' 创建htmlfile对象
Set htmlfile = CreateObject("htmlfile")
' 设置脚本语言为JavaScript
htmlfile.parentWindow.execScript ("var rsa = new RSAKey();"), "JavaScript"
' 导入公钥
htmlfile.parentWindow.execScript ("rsa.setPublic('" & publicKey & "');"), "JavaScript"
' 加密
cipherText = htmlfile.parentWindow.execScript ("rsa.encrypt('" & text & "');"), "JavaScript"
' 输出加密结果
MsgBox "加密后的文本为:" & cipherText
End Sub
其中,publicKey变量需要替换为你自己的公钥字符串。
希望这可以帮到你,如还有疑问,请在评论中提出。
ASP VBSCRIPT VBA RSA 公钥加密 私钥解密 私钥签名 公钥验签
<%
'@title: Class_Crypt_Rsa
'@author: ekede.com
'@date: 2020-10-28
'@description: RSA 公钥加密->私钥解密 , 私钥签名->公钥验签
Class Class_Crypt_Rsa
Private TAsc,objRsa
Private PrivateKey_,PublicKey_
'@PrivateKey: Your personal private key. Keep this hidden. Need C# format.
Public Property Get PrivateKey
PrivateKey = PrivateKey_
End Property
Public Property Let PrivateKey(Value)
PrivateKey_ = Value
objRsa.FromXmlString (PrivateKey_)
PublicKey_ = objRsa.ToXmlString(False)
End Property
'@PublicKey: Key for others to encrypt data with.
Public Property Get PublicKey
PublicKey = PublicKey_
End Property
Public Property Let PublicKey(Value)
PublicKey_ = Value
objRsa.FromXmlString (PublicKey_)
End Property
Private Sub Class_Initialize()
Set TAsc = Server.CreateObject("System.Text.UTF8Encoding")
Set objRsa = Server.CreateObject("System.Security.Cryptography.RSACryptoServiceProvider")
CreateKey()
End Sub
Private Sub Class_Terminate()
Set objRsa = Nothing
Set TAsc = Nothing
End Sub
Public Sub CreateKey()
PrivateKey_ = objRsa.ToXmlString(True)
PublicKey_ = objRsa.ToXmlString(False)
End Sub
'@Encrypt(ByRef Str): 公钥加密
Public Function Encrypt(ByRef Str)
Dim Bytes
Bytes = TAsc.GetBytes_4(Str)
Encrypt = Bytes2Base64(RsaEncrypt((Bytes)))
End Function
Private Function RsaEncrypt(ByRef Bytes)
RsaEncrypt = objRsa.Encrypt((Bytes),False)
End Function
'@Decrypt(ByRef Bytes): 私钥解密
Public Function Decrypt(ByRef Str)
Dim Bytes
Bytes=RsaDecrypt(Base642Bytes(Str))
Decrypt = TAsc.GetString((Bytes))
End Function
Private Function RsaDecrypt(ByRef Bytes)
RsaDecrypt = objRsa.Decrypt((Bytes), False)
End Function
'@SignData(ByRef Str,ByRef Hash): 私钥签名 Hash(MD5 SHA1 SHA256)
Public Function SignData(ByRef Str,ByRef Hash)
Dim Bytes
Bytes = TAsc.GetBytes_4(Str)
SignData = Bytes2Base64(SignHash(Bytes, Hash))
End Function
Private Function SignHash(ByRef Bytes,ByRef Hash)
Dim MapNameToOID
If Hash="MD5" Then
MapNameToOID = "1.2.840.113549.2.5"
Bytes = Md5(Bytes)
SignHash = objRsa.SignHash((Bytes),MapNameToOID)
End If
If Hash="SHA1" Then
MapNameToOID = "1.3.14.3.2.26"
Bytes = SHA1(Bytes)
SignHash = objRsa.SignHash((Bytes),MapNameToOID)
End If
If Hash="SHA256" Then
MapNameToOID = "2.16.840.1.101.3.4.2.1"
Bytes = SHA256(Bytes)
SignHash = objRsa.SignHash((Bytes),MapNameToOID)
End If
End Function
'@VerifyData(ByRef str,ByRef Hash,ByRef StrSign): 公钥验签
Public Function VerifyData(ByRef str,ByRef Hash,ByRef StrSign)
Dim Bytes,BytesSign
Bytes = TAsc.GetBytes_4(Str)
BytesSign = Base642Bytes(StrSign)
VerifyData = objRsa.VerifyData((Bytes),Hash,(BytesSign))
End Function
'Hash
Public Function Md5(ByRef Bytes)
Dim En
Set En = Server.CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")
Md5 = En.ComputeHash_2((Bytes))
Set En = Nothing
End Function
Public Function SHA1(ByRef Bytes)
Dim En
Set En = Server.CreateObject("System.Security.Cryptography.SHA1CryptoServiceProvider")
SHA1 = En.ComputeHash_2((Bytes))
Set En = Nothing
End Function
Public Function SHA256(ByRef Bytes)
Dim En
Set En = Server.CreateObject("System.Security.Cryptography.SHA256CryptoServiceProvider")
SHA256 = En.ComputeHash_2((Bytes))
Set En = Nothing
End Function
'Base64
Public Function Base642Bytes(str)
Dim objXML, objXMLNode
Set objXML = Server.CreateObject("msxml2.domdocument")
Set objXMLNode = objXML.createelement("b64")
objXMLNode.datatype = "bin.base64"
objXMLNode.text = str
Base642Bytes = objXMLNode.nodetypedvalue
Set objXMLNode = Nothing
Set objXML = Nothing
End Function
Public Function Bytes2Base64(bytes)
Dim objXML, objXMLNode
Set objXML = Server.CreateObject("msxml2.domdocument")
Set objXMLNode = objXML.createelement("b64")
objXMLNode.datatype = "bin.base64"
objXMLNode.nodetypedvalue = bytes
Bytes2Base64 = objXMLNode.text
Set objXMLNode = Nothing
Set objXML = Nothing
End Function
End Class
%>
打开Excel,点击菜单栏上的"文件",选择"选项",找到"信任中心",然后点击"信任中心设置"按钮。在"宏设置"选项卡中,确保"对于VBA项目模型中使用的所有对象模型启用访问"选项被选中。保存设置后,重新运行你的VBA代码,看看问题是否解决
建议你考虑使用其他的加密方法,比如AES或者DES等对称加密算法,这些算法在VBA中可以直接使用,也相对比较安全。如果非得使用RSA,你可能需要考虑使用其他的编程语言或者环境,比如C#、Java、Python等,这些语言都有成熟的RSA加密库。
参考gpt
您的代码中存在一些问题,导致报错。以下是您可以尝试的修改方法:
首先,请确保您已经正确引用了Microsoft HTML Object Library
。在VBA编辑器中,点击工具
-> 引用
,然后勾选Microsoft HTML Object Library
。
在使用htmlfile
对象之前,您需要确保已经正确加载了JSEncrypt库。您可以将JSEncrypt库的代码保存为一个js文件,并在VBA中使用oWindow.execScript
方法加载该文件。例如,将JSEncrypt库保存为JSEncrypt.js
文件,并将以下代码添加到您的VBA代码中:
oWindow.execScript "var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.src = 'path/to/JSEncrypt.js'; head.appendChild(script);"
请将path/to/JSEncrypt.js
替换为实际的JSEncrypt库文件路径。
encryptByRSA
函数时,您需要将字符串参数用引号括起来。修改以下代码行:MsgBox oWindow.eval("encryptByRSA(""" & a & """)")
这样可以确保字符串参数被正确传递给encryptByRSA
函数。
请注意,以上代码仅提供了一种尝试解决问题的方法。如果问题仍然存在,请确保JSEncrypt库的路径正确,并确保JSEncrypt库能够在htmlfile
对象中正确加载和执行。
函数要先定义,再执行
下面是使用Python的cryptography库进行RSA公钥加密的示例代码:
cryptography.hazmat.primitives.asymmetric import rsa, paddingfrom cryptography.hazmat.primitives import serialization, hashes# 生成RSA密钥对private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048)
public_key = private_key.public_key()
# 将公钥序列化为PEM格式pem_public_key = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo)
# 加密明文plaintext = b'Hello, World!'
ciphertext = public_key.encrypt(
plaintext,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None )
)
# 打印加密结果print("Ciphertext:", ciphertext.hex())