VBA 如何使用 SHA256 文心一言
简介
文心一言是百度开发的一款大型语言模型,它具有强大的文本生成、翻译、对话问答等能力。要使用文心一言,需要先获取API Key并集成到应用程序中。本文介绍了如何使用 VBA(Visual Basic for Applications)在 Microsoft Excel 中使用 SHA256 算法对文心一言的请求进行签名,以确保请求的安全性。
步骤
1. 获取文心一言 API Key
注册百度 AI 开发者账号并创建应用,即可获取 API Key。
2. 启用 VBA 宏
在 Excel 中,转到“文件”>“选项”>“信任中心”>“信任中心设置”。在“宏设置”部分中,选择“启用所有宏(不推荐,可能危险)”。
3. 导入 VBA 模块
复制以下代码并将其粘贴到 Excel 的 VBA 编辑器中(Alt+F11):
“`vba
Option Explicit
Public Const REQUESTMETHODGET = “GET”
Public Const REQUESTMETHODPOST = “POST”
Public Function SendHttpRequest(ByVal url As String, ByVal requestmethod As String, ByVal requestbody As String) As String
Dim client As New MSXML2.XMLHTTP60
client.Open requestmethod, url, False
client.setRequestHeader “Content-Type”, “application/json”
client.Send requestbody
SendHttpRequest = client.ResponseText
End Function
Public Function UrlEncode(ByVal str As String) As String
Dim result As String
For i = 1 To LenB(str)
Dim chr As String
chr = Mid(str, i, 1)
If Asc(chr) = 32 Then
result = result & “+”
ElseIf Asc(chr) = 37 Then
result = result & “%25”
ElseIf Asc(chr) = 38 Then
result = result & “%26”
ElseIf Asc(chr) = 60 Then
result = result & “%3C”
ElseIf Asc(chr) = 62 Then
result = result & “%3E”
ElseIf Asc(chr) = 96 Then
result = result & “%60”
ElseIf Asc(chr) = 124 Then
result = result & “%7C”
ElseIf Asc(chr) < 32 Or Asc(chr) > 126 Then
result = result & “%” & Hex(Asc(chr))
Else
result = result & chr
End If
Next i
UrlEncode = result
End Function
Public Function ComputeSHA256(ByVal s As String) As String
Dim sha256 As Object
Set sha256 = CreateObject(“System.Security.Cryptography.SHA256Managed”)
Dim bytes() As Byte
bytes = sha256.ComputeHash(StrConv(s, vbUnicode))
Dim sb As New Text.StringBuilder
Dim i As Long
For i = 0 To UBound(bytes) – 1
sb.Append Format(bytes(i), “x2”)
Next i
ComputeSHA256 = sb.ToString
End Function
Public Function GenSignature(ByVal requesturi As String, ByVal requestmethod As String, ByVal requestbody As String, ByVal apikey As String, ByVal secretkey As String) As String
Dim date As Date
date = Now
Dim requestcontent As String
requestcontent = requestmethod & “\n” & requesturi & “\n” & date & “\n” & requestbody
Dim signature As String
signature = ComputeSHA256(requestcontent & secretkey)
signature = UrlEncode(signature)
GenSignature = “APIKey ” & api_key & “:” & signature
End Function
“`
4. 调用 API
以下 VBA 代码演示了如何使用 GenSignature 函数生成签名并调用文心一言 API:
“`vba
Sub CallWenxinYanyi()
Dim apikey As String, secretkey As String
‘ 替换为你的 API Key 和 Secret Key
apikey = “YOURAPIKEY”
secretkey = “YOURSECRETKEY”
Dim request_method As String
' 支持 GET 和 POST 方法
request_method = REQUEST_METHOD_GET
'request_method = REQUEST_METHOD_POST
Dim request_uri As String
' 替换为文心一言 API 地址
request_uri = "/api/v2/conversation"
Dim request_body As String
' 替换为 API 请求体
request_body = "{""query"": ""你好,世界!""}"
Dim signature As String
signature = GenSignature(request_uri, request_method, request_body, api_key, secret_key)
Dim response As String
response = SendHttpRequest(request_uri, request_method, request_body)
' 输出响应
Debug.Print response
End Sub
“`
安全性
使用 SHA256 算法对请求进行签名可以确保以下安全性:
- 完整性:SHA256 是一种哈希算法,它可以确保请求的内容没有被篡改过。
- 真实性:签名使用百度分配的 Secret Key 生成,只有文心一言服务器才能验证签名,从而确保请求来自授权的源。
- 不可否认性:一旦签名生成,就无法否认请求的发送方。
问答
SHA256 算法是什么以及它的作用是什么?
SHA256 是一种密码学哈希函数,它将输入字符串转换为固定长度的哈希值。它用于确保数据的完整性和真实性。为什么需要对文心一言的请求进行签名?
对请求进行签名可以确保请求的安全性,防止请求被篡改或伪造。如何获取文心一言的 API Key 和 Secret Key?
注册百度 AI 开发者账号并创建应用,即可获得 API Key 和 Secret Key。如果忘记了 Secret Key,应该怎么做?
请联系百度 AI 技术支持,他们可以重置 Secret Key。是否可以不使用 SHA256 算法对请求进行签名?
不建议不使用 SHA256 算法对请求进行签名,因为它会降低请求的安全性。
原创文章,作者:田冬彤,如若转载,请注明出处:https://www.wanglitou.cn/article_102333.html