Convert Base64 [] byte to readable string in java

I want to convert the Base62 Byte array to a user-friendly, stylish

In this code

I need to convert "[B @ 913fe2" (result) to "Hello Wold!".

I looked through several previous questions, but I do not know how to do this.

package chapter9; import java.security.KeyStore; import java.security.PrivateKey; import java.security.cert.*; import java.util.Arrays; import org.apache.commons.codec.binary.Base64; import org.bouncycastle.cms.CMSProcessable; import org.bouncycastle.cms.CMSProcessableByteArray; import org.bouncycastle.cms.CMSSignedData; import org.bouncycastle.cms.CMSSignedDataGenerator; /** * Example of generating a detached signature. */ public class SignedDataExample extends SignedDataProcessor { public static void main(String[] args) throws Exception { KeyStore credentials = Utils.createCredentials(); PrivateKey key = (PrivateKey)credentials.getKey(Utils.END_ENTITY_ALIAS, Utils.KEY_PASSWD); Certificate[] chain = credentials.getCertificateChain(Utils.END_ENTITY_ALIAS); CertStore certsAndCRLs = CertStore.getInstance("Collection", new CollectionCertStoreParameters(Arrays.asList(chain)), "BC"); X509Certificate cert = (X509Certificate)chain[0]; // set up the generator CMSSignedDataGenerator gen = new CMSSignedDataGenerator(); gen.addSigner(key, cert, CMSSignedDataGenerator.DIGEST_SHA256); gen.addCertificatesAndCRLs(certsAndCRLs); // create the signed-data object CMSProcessable data = new CMSProcessableByteArray("Hello World!".getBytes()); //CMSProcessable data = new CMSProcessableByteArray(data1.getBytes()); CMSSignedData signed = gen.generate(data, "BC"); // recreate signed = new CMSSignedData(data, signed.getEncoded()); //signed.signedContent //signed.g CMSProcessable S = signed.getSignedContent(); byte[] K = Base64.decodeBase64((S.getContent()).toString()); //String K = Base64.decodeBase64(S.getContent()); //BASE64Decoder.decoder.decodeBuffer() // verification step X509Certificate rootCert = (X509Certificate)credentials.getCertificate(Utils.ROOT_ALIAS); if (isValid(signed, rootCert)) { System.out.println("verification succeeded"); System.out.println(K); } else { System.out.println("verification failed"); } } 

}

again, the result shows

verification completed

[B @ 913fe2

I need to convert "[B @ 913fe2" (result) to "Hello Wold!".

Sincerely.

+4
source share
3 answers

Calling toString() in a byte array simply prints the type of the array ( [B ), followed by its hashCode. You want to use new String(byteArray) .

You should also use explicit encoding instead of the default default:

 byte[] array = string.getBytes("UTF8"); String s = new String(array, "UTF8"); 
+9
source

You have to use

 byte[] k = Base64.decodeBase64((S.getContent()).toString()); String asString = new String(k); 
+3
source

You must use this code

 CMSSignedData signeddata = new CMSSignedData(signedBytes); CMSProcessable cmsdata = signeddata.getSignedContent(); System.out.println(new String((byte[]) s.getContent())); 

This works for me. I am using BouncyCastle and trying to get the source data from PKCS7 signed data.

-1
source

All Articles