如何使用PowerBuilder将字符串编码为base64编码算法
How to encode a string to base64 encoding algorithm using PowerBuilder
要求:
- 给定一个字符串
- 我们需要使用上面给定的字符串生成 Base64 编码的字符串。
我们如何使用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 的回复,从第一个 link 开始使用以下代码:
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 的第一个 link 建议,字符串 "realhowto"
应转换为 "cmVhbGhvd3Rv."
但是当我尝试上面的代码时,我得到了 "cgBlAGEAbABoAG8AdwB0AG8A"
如有任何建议,我们将不胜感激。
查看 this link
确保您也查看评论。
另一种选择is here.
Real 的操作方法是许多 PowerBuilder 技巧的很好参考。
与 Matt 给出的第一个 link 核实。
该解决方案奏效了。
我之前唯一遗漏的是在将原始字符串转换为 blob 时,我们需要通过以下方式进行转换:
String ls_original_string
Blob lblob_test
lblob_test = Blob(ls_original_string, EncodingAnsi!)
blob lblob_test 可以作为参数传递给函数 CryptBinaryToString(...)
我的加密示例也有 Real 示例使用的 API 函数。
要求:
- 给定一个字符串
- 我们需要使用上面给定的字符串生成 Base64 编码的字符串。
我们如何使用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 的回复,从第一个 link 开始使用以下代码:
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 的第一个 link 建议,字符串 "realhowto"
应转换为 "cmVhbGhvd3Rv."
但是当我尝试上面的代码时,我得到了 "cgBlAGEAbABoAG8AdwB0AG8A"
如有任何建议,我们将不胜感激。
查看 this link
确保您也查看评论。
另一种选择is here.
Real 的操作方法是许多 PowerBuilder 技巧的很好参考。
与 Matt 给出的第一个 link 核实。 该解决方案奏效了。 我之前唯一遗漏的是在将原始字符串转换为 blob 时,我们需要通过以下方式进行转换:
String ls_original_string
Blob lblob_test
lblob_test = Blob(ls_original_string, EncodingAnsi!)
blob lblob_test 可以作为参数传递给函数 CryptBinaryToString(...)
我的加密示例也有 Real 示例使用的 API 函数。