Search code examples
javapowerbuilder

How to encode a string to base64 encoding algorithm using PowerBuilder


Requirement:

  • Given a String
  • we need to generate Base64 encoded string using the above given string.

How can we implement it using powerBuilder.

For reference, The Java implementation of the above case is as follows:

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 ;
    }

============================================================

As per Matt's reply, Used this below code from the 1st 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"`

=========================================

According to the 1st link suggested by Matt, The string "realhowto" should be converted to "cmVhbGhvd3Rv." But when I tried the above code, I got "cgBlAGEAbABoAG8AdwB0AG8A"

Any advise will be appreciated.


Solution

  • Check out this link

    Make sure you look at the comments as well.

    Another option is here.

    Real's How To is a very good reference for many PowerBuilder tips.