要求:
我们如何使用powerBuilder实现它。
供参考,上述案例的Java实现如下:
import org.apache.tomcat.util.codec.binary.Base64;
import java.io.UnsupportedEncodingException;
public String getClientEncoded() throws UnsupportedEncodingException {
String givenString= "Input_String";
String bytesEncoded = Base64.encodeBase64String(valueToHash.getBytes("UTF-8"));
System.out.println("encoded value is " + bytesEncoded);
return bytesEncoded ;
}
=============================================== =============
根据Matt的回复,使用以下代码来自第一个链接:
String ls_valueToBeEncoded
blob lblob
ls_valueToBeEncoded = "realhowto"
lblob = Blob(ls_valueToBeEncoded)
ULong lul_len, lul_buflen
Boolean lb_rtn
lul_len = Len(ablob_data)
lul_buflen = lul_len * 2
ls_encoded = Space(lul_buflen)
lb_rtn = CryptBinaryToString(ablob_data, &
lul_len, CRYPT_STRING_BASE64, &
ref ls_encoded, lul_buflen) // Used ref ls_encoded to get the string. Otherwise, junk characters gets stored in ls_encoded.`
=======================================
Used the below code in Global External Function:
`FUNCTION boolean CryptBinaryToString ( &
Blob pbBinary, &
ulong cbBinary, &
ulong dwFlags, &
Ref string pszString, &
Ref ulong pcchString ) &
LIBRARY "crypt32.dll" ALIAS FOR "CryptBinaryToStringA;Ansi"`
=========================================
根据Matt建议的第一个链接,字符串"realhowto"
应转换为"cmVhbGhvd3Rv."
但是当我尝试上面的代码时,我得到了"cgBlAGEAbABoAG8AdwB0AG8A"
任何建议将不胜感激。
答案 0 :(得分:3)
答案 1 :(得分:1)
我的加密示例还包含Real的示例所使用的API函数。
答案 2 :(得分:0)
使用Matt给出的第一link进行检查。 解决方案有效。 我之前唯一遗漏的是将原始字符串转换为blob时,我们需要通过以下方式进行转换:
String ls_original_string
Blob lblob_test
lblob_test = Blob(ls_original_string, EncodingAnsi!)
blob lblob_test可以作为参数传递给函数CryptBinaryToString(...)