28,391
社区成员
发帖
与我相关
我的任务
分享
网上搜下asp的base64加密,有很多代码,但是加密出来的东西用js无法解密。
比如用前端js的base64加密“你好”得到是“5L2g5aW9”
用网上搜的asp函数去加密得到的版本很多,但是就是没有加密结果是“5L2g5aW9”的,比如加密出来是“Pz8=”或者“xOO6ww==”或“77u/5L2g5aW9”以及“77u/77+977+977+9”,然后用js解码得到的是问号
asp网上找的base64加密的结果有:
Pz8/
Pz8=
xOO6ww==
77u/77+977+977+9
Function StrToBase64(txt)
Dim bytes
With CreateObject("ADODB.Stream")
.Mode = 3
.Type = 2
.Charset = "UTF-8"
.Open
.WriteText txt
.Position = 0
.Type = 1
.Position = 3 ‘ 跳过 bom 头, 就不会带那个 77u/ 在开头
bytes = .Read(-1)
.Close
End With
With CreateObject("Microsoft.XMLDOM").createElement("TXT")
.dataType = "bin.base64"
.nodeTypedValue = bytes
StrToBase64 = Replace(Replace(.text, vbCr, ""), vbLf, "")
End With
End Function
System.Text.Encoding.UTF8 了解下。
纯前端编码的方法是:btoa(unescape(encodeURIComponent("你好"))); 得到的结果和你的一致。
终于在Google上找到了解决方案。国内bd真是垃圾,一大堆搜出来不能用的。
以下是经过测试通过的base64加密函数
<%
Function Base64Encode(sText)
Dim oXML, oNode
Set oXML = CreateObject("Msxml2.DOMDocument.3.0")
Set oNode = oXML.createElement("base64")
oNode.dataType = "bin.base64"
oNode.nodeTypedValue = Stream_StringToBinary(sText)
Base64Encode = Replace(Replace(oNode.Text, Chr(10), ""), Chr(13), "")
Set oNode = Nothing
Set oXML = Nothing
End Function
Private Function Stream_StringToBinary(Text)
Const adTypeText = 2
Const adTypeBinary = 1
Dim BinaryStream 'As New Stream
Set BinaryStream = CreateObject("ADODB.Stream")
BinaryStream.Type = adTypeText
BinaryStream.Charset = "UTF-8"
BinaryStream.Open
BinaryStream.WriteText Text
BinaryStream.position = 0
BinaryStream.Type = adTypeBinary
BinaryStream.position = 0
Stream_StringToBinary = BinaryStream.Read
Set BinaryStream = Nothing
End Function
%>
在前端对接收到的json数据批量处理还原。
//对msg中的base64编码进行解密
let reg = /77u\/([^\s]+)/g;
let result = "";
while(result = reg.exec(msg)) {
msg=msg.replace("77u/" + result[1], Base64.decode(result[1]));
}