PowerBuilder Engineering, Information Technology and Solutions Group
... 3 PBCrypto... 3 PowerBuilder Exception JCE Exceptions... 4 PBCrypto... 4 PBCrypto API... 5 CreateRSAKeyPair... 5 DecryptCipherTextUsingBlockCipher... 5 DecryptCipher TextUsingPBE... 6 DecryptSecretKeyUsingRSAPrivateKey... 7 DumpBCProviderList... 8 EncryptPlainTextUsingBlockCipher... 9 EncryptPlainTextUsingPBE... 9 EncryptSecretKeyUsingRSAPublicKey... 9 GenerateDigitalSignature... 10 GenerateMessageAuthenticationCode... 10 GenerateMessageDigest... 11 GenerateSecretKey... 11 VerifySignature... 12... 13 2
PowerBuilder DataWindow XML TCP/IP PowerBuilder 10 DLL PowerBuilder PowerScript PowerBuilder 10 PBCrypto PowerBuilder PowerBuilder PowerBuilder Jason Weiss Java Cryptography Extensions: Practical Guide for Programmers ISBN: 0-12- 742751-1 PBCrypto Java Cryptography Extension JCE PowerBuilder IDE Java Java PowerBuilder 10 PBCrypto Java JCE Java JCE PBCrypto PowerBuilder 1 PowerScript byte PBCrypto Base64 Base64 Base64 RFC 8 6 PowerBuilder pbejbclient100.pbd PBCrypto n_cst_cryptography pbcryptoclient100.pbd Program Files Sybase Shared PowerBuilder pbcryptoclient100.pbd Program Files Sybase PowerBuilder 3
10.0 Cryptograph 3 Java.jar Java CLASSPATH PowerBuilder 3 jce.jar Java Cryptography Extension JDK 1.4 JCE Bouncy Castle http://www.bouncycastle.org bcprovjdk14-1xx.jar xx Java / PowerBuilder pbcrypto-1_0.jar pbcrypto-1_0.jar PowerBuilder Java PBCrypto pbcrypto-1_0.jar Java 1 PowerBuilder Exception JCE Exception JCE CATCH PowerBuilder NoSuchAlgorithmException JCE NoSuchAlgorithmException PowerBuilder JCE JCE PowerBuilder PBCrypto PBCrypto n_cst_cryptography NVO n_cst_cryptography NVO Singleton PowerBuiler NVO NVO AutoInstantiate true n_cst_cryptography getinstance() // // crypto // PowerBuilder 1 PowerBuilder 1 CATCH PBCrypto 4
PBCrypto API PBCrypto pbcrypto-1_0.jar 13 Java Cryptography Extensions: Practical Guide for Programmers PowerBuilder CreateRSAKeyPair creatersakeypair ( ) returns any RSA 3 4 4.4 4.5 w_digital_signature.cb_create.clicked() String ls_keys[2] ls_keys = pbcrypto.creatersakeypair() mle_public.text = ls_keys[1] mle_private.text = ls_keys[2] creatersakeypair() Base64 RSA 15 : DecryptCipherTextUsingBlockCipher decryptciphertextusingblockcipher ( string algorithm, string secretkey, string ciphertext ) returns string NIST DES AES Advanced Encryption Standard 2 AES DES Blowfish JCE 5
2 Base64 3 Base64 1 1.4 1.6 w_symmetric_encryption.cb_decrypt.clicked() IF lnv_crypto.of_getinstance(pbcrypto) AND (Len(sle_encrypted.text) > 0) THEN sle_decrypted.text = pbcrypto.decryptciphertextusingblockcipher("aes", sle_secretkey.text, sle_encrypted.text) ELSE MessageBox("Alert", "You must encrypt a phrase first!") Base64 Base64 null DecryptCipherTextUsingPBE decryptciphertextusingpbe ( string algorithm, long salt[], long iters, character passphrase[], string ciphertext ) returns string PBE Password Based Encryption PBE 2 2.8 2 salt 3 4 5 Base64 Base64 1 1.4 1.6 w_pbe_encryption.cb_decrypt.clicked() 6
//salt //salt // long salt[] = { 23, 197, 85, 82, 13, 56, 213, 197 } long iterations = 1000 IF lnv_crypto.of_getinstance(pbcrypto) AND (Len(sle_passphrase.text) > 0) AND (Len(sle_plaintext.text) > 0) THEN sle_decrypted.text = pbcrypto.decryptciphertextusingpbe("pbewithmd5anddes, salt, iterations, sle_passphrase.text, sle_encrypted.text) ELSE MessageBox("Alert", "!") null DecryptSecretKeyUsingRSAPrivateKey decryptsecretkeyusingrsaprivatekey ( string string_1, string string_2 ) returns string RSA 5 5.4.6 RSA RSA Base64 Base64 w_symmetric_asymmetric_combo.cb_decrypt.clicked() 7
sle_decrypted.text = pbcrypto.decryptsecretkeyusingrsaprivatekey(sle_encrypted.text, mle_private.text) null DumpBCProviderList dumpbcproviderlist ( string engine ) returns string PowerBuilder 1 1.4 1.6 w_dump_available_algorithms.ddlb_engine.selectionchanged() mle_dump.text = pbcrypto.dumpbcproviderlist(this.text) JCE JCE http://java.sun.com Java Cryptography Extension EncryptPlainTextUsingBlockCipher encryptplaintextusingblockcipher ( string algorithm, string secretkey, string plaintext ) returns string decryptciphertextusingblockcipher() 2 Base64 3 Base64 8
IF lnv_crypto.of_getinstance(pbcrypto) AND (Len(sle_secretKey.text) > 0) THEN sle_encrypted.text = pbcrypto.encryptplaintextusingblockcipher("aes", sle_secretkey.text, sle_plaintext.text) ELSE MessageBox("Alert", "!") EncryptPlainTextUsingPBE encryptplaintextusingpbe ( string algorithm, long salt[], long iters, character passphrase[], string plaintext ) returns string decryptciphertextusingpbe() 2 salt 3 4 5 Base64 long salt[] = { 23, 197, 85, 82, 13, 56, 213, 197 } long iterations = 1000 //char password[] = { 'a', 'p', 'p', 'l', 'e', 'j', 'a', 'x'} IF lnv_crypto.of_getinstance(pbcrypto) AND (Len(sle_passphrase.text) > 0) AND (Len(sle_plaintext.text) > 0) THEN sle_encrypted.text = pbcrypto.encryptplaintextusingpbe("pbewithmd5anddes", salt, iterations, sle_passphrase.text, sle_plaintext.text) ELSE MessageBox("Demo Alert", " /!") EncryptSecretKeyUsingRSAPublicKey encryptsecretkeyusingrsapublickey ( string string_1, string string_2 ) returns string 9
decryptsecretkeyusingrsaprivatekey() Base64 2 Base64 RSA Base64 sle_encrypted.text = pbcrypto.encryptsecretkeyusingrsapublickey(sle_secretkey.text, mle_public.text) GenerateDigitalSignature generatedigitalsignature ( string keyalgorithm, string signaturealgorithm, string privatekey, string document ) returns string 3 4 4.4 4.5 2 3 Base64 RSA 4 Base64 w_digital_signature.cb_sign.clicked() sle_signature.text = pbcrypto.generatedigitalsignature("rsa", "MD5withRSA", mle_private.text, mle_message.text) 10
2 1 1.4 1.6 GenerateMessageAuthenticationCode generatemessageauthenticationcode ( string algorithm, string secretkey, string document ) returns string MAC Message Authentication Codes Alice Bob Eve MAC Alice Bob Eve Eve Bob MAC Message Authentication Codes 4 4.3 2 Base64 3 Base64 w_generate_mac.cb_generate.clicked() String ls_result IF lnv_crypto.of_getinstance(pbcrypto) AND (Len(sle_secretKey.text) > 0) THEN ls_result = pbcrypto.generatemessageauthenticationcode("hmacmd5", sle_secretkey.text, sle_hashcode.text) ELSE MessageBox("Alert", "!") 2 1 1.4 1.6 GenerateMessageDigest generatemessagedigest ( string algorithm, string document ) returns string 1 2 11
MD-5 SHA-1 4 2 Base64 w_generate_message_digest.cb_generate.clicked() String ls_result ls_result = pbcrypto.generatemessagedigest("sha-1", sle_hashcode.text) 2 1 1.4 1.6 GenerateSecretKey generatesecretkey ( string algorithm ) returns string JCE KeyGenerator 2 2.1 2.4 w_symmetric_encryption.cb_secretkey.clicked() sle_secretkey.text = pbcrypto.generatesecretkey("hmacmd5") 2 1 1.4 1.6 VerifySignature verifysignature ( string keyalgorithm, string sigalgorithm, string pubkey, string document, string signature) returns Boolean generatedigitalsignature() 12
2 3 RSA Base64 4 5 Base64 Boolean true boolean lb_valid lb_valid = pbcrypto.verifysignature("rsa", "MD5withRSA", mle_public.text, mle_message.text, sle_signature.text) MessageBox("Signature Verification Results", lb_valid) 5 1 Java Cryptography Extensions: Practical Guide for Programmers PowerBuilder Java Cryptography Extensions Be safe out there! 13
Sybase, Inc. Worldwide Headquarters One Sybase Drive Dublin, CA 94568-7902 USA Tel: +800 8 SYBASE www.sybase.com Copyright 2004 Sybase, Inc. All rights reserved. Unpublished rights reserved under U.S. copyright laws. Sybase and the Sybase logo are trademarks of Sybase, Inc. All other trademarks are property of their respective owners. indicates registration in the United States. Specifications are subject to change without notice. Printed in the U.S.A. 14