uso PBFunc n_pbfunc_cryp de los objetos puede ser fácilmente SM4 cifrado y operación de descifrado, en el que el vector no requiere BCE IV, otros modos necesitan IV
Descargar Código: https://download.csdn.net/download/my_aa/12309197
- SM4 cifrado:
1 // disponible http://aks.jd.com/tools/sec/ comparación resultado 2 Cadena ls_data . 3 ls_data = sle_1.text // datos a ser cifrados . 4 Cuerda ls_key . 5 ls_key = sle_key.Text // 128 bits (16 . 8 *) . 6 cuerdas ls_IV . 7 // el modo CBC requiere vectores iv, el modo de BCE, se ignora el valor del parámetro . 8 ls_IV = " 8a6c4ddd8a6c4ddd " // IV . 9 10 n_pbfunc_cryp lnv_cryp . 11 // formato de cifrado contenido proporcionado 12 es de cadena ls_out_code 13 esRb_result_base64 la IF. El comprueba la continuación 14 ls_out_code = lnv_cryp.HASH_RESULT_BASE64 // el codificador Base64 15 Else 16 ls_out_code = lnv_cryp.HASH_RESULT_HEX // 16 hex . 17 End la IF 18 es // datos que codifican formatos . 19 largo ll_dataEndCode 20 es el IF rb_utf8. El comprueba el entonces // UTF 8 codificador 21 es ll_dataEndCode = lnv_cryp.DataEncode_UTF8 22 es el otro 23 está ll_dataEndCode = lnv_cryp.DataEncode_DEFAULT 24 Finalizar la IF 25 // selección de modo 26 es Cadena ls_CipherMode 27 ls_CipherMode = ddlb_chipermode.Text 28 largo ll_CipherMode 29 la IF ls_CipherMode = " una BCE " la continuación 30 ll_CipherMode = lnv_cryp.CipherMode_ECB / * un modo ECB * / 31 es el otro 32 ll_CipherMode lnv_cryp.CipherMode_CBC = / * el modo CBC * / 33 es Terminar la IF 34 es // bits de longitud de clave, un personaje es de 8 bits, es decir 16 caracteres 128, 192 de 24 caracteres, 32 caracteres 256 35 largo ll_keyLen 36 la IF ddlb_keylen.Text = " 128 "Entonces 37 ll_keyLen = 128 38 elseif ddlb_keylen.Text = " 192 " Entonces 39 ll_keyLen = 192 40 elseif ddlb_keylen.Text = " 256 " Entonces 41 ll_keyLen = 256 42 más 43 ll_keyLen = 128 44 END IF 45 cadena ls_out 46 // 进行加密 47 SI lnv_cryp.of_sm4_encrypt (y 48 ll_CipherMode, / * 模式* / y 49 lnv_cryp.PaddingMode_PKCS5, / * modo de relleno PKCS5 * / y 50 ll_keyLen, / * longitud de clave de bits * / Y 51 es ls_data, ls_key, ls_IV, y 52 es ll_dataEndCode, y 53 se ls_out_code, / * contenido codificado encriptada * / y 54 ls_out) la continuación 55 mle_1.Text = ls_out // encriptada contenido 56 es el otro 57 está la messageBox ( "" , " cifrado no " ) 58 End la IF 59
- descifrado SM4
1 // disponible http://tool.chacuo.net/cryptaes resultado de comparación 2 Cadena ls_data . 3 ls_data = mle_1.Text // para descifrar los datos . 4 . 5 Cadena ls_key . 6 ls_key = sle_key.Text // 128 bits (16 * 8 ) . 7 . 8 cadena ls_IV . 9 // el modo CBC requiere vectores IV, modo ECB ignora este valor de parámetro 10 ls_IV = " 8a6c4ddd8a6c4ddd " // IV . 11 12 es 13 es lnv_cryp n_pbfunc_cryp 14 15 // contenido formato de cifrado proporcionado 16 cadenals_out_code 17 IF rb_result_base64. comprobado Entonces 18 ls_out_code = lnv_cryp.HASH_RESULT_BASE64 // Base64编码 19 Else 20 ls_out_code = lnv_cryp.HASH_RESULT_HEX // 16进制 21 END IF 22 23 largo ll_dataEndCode 24 IF rb_utf8. comprobado entonces // UTF-8编码 25 ll_dataEndCode = lnv_cryp.DataEncode_UTF8 26 más 27 ll_dataEndCode = lnv_cryp.DataEncode_DEFAULT 28 END IF 29 30 // el selector de modo 31 es de cadena ls_CipherMode 32 ls_CipherMode = ddlb_chipermode.Text 33 es 34 es largo ll_CipherMode 35 la IF ls_CipherMode = " una BCE " la continuación 36 ll_CipherMode = lnv_cryp.CipherMode_ECB / * un modo ECB * / 37 [ el otro 38 es ll_CipherMode lnv_cryp.CipherMode_CBC = / * el modo CBC * / 39 End la IF 40 41 es // bits de la clave de longitud, un 8 bits caracteres, 128 que es de 16 caracteres, 24 caracteres 192, 256 de 32 caracteres 42 es largo ll_keyLen 43 se= Ddlb_keylen.Text la SI " 128 " la continuación 44 es ll_keyLen = 128 45 elseif ddlb_keylen.Text = " 192 " la continuación 46 es ll_keyLen = 192 47 elseif ddlb_keylen.Text = " 256 " la continuación 48 ll_keyLen = 256 49 el otro 50 ll_keyLen = 128 51 es poner fin a la IF 52 es 53 es ls_out BLOB // contenido descifrado 54 es largo ll_outLen // longitud del contenido (número de bytes) descifrada 55 //El siguiente se descifra 56 es el IF lnv_cryp.of_sm4_decrypt (y 57 es ll_CipherMode, / * modo * / y 58 lnv_cryp.PaddingMode_PKCS5, / * modo de relleno PKCS5 * / y 59 ll_keyLen, / * longitud de clave de bits * / y 60 ls_data, ls_key, ls_IV , y 61 es ls_out_code, / * codificador contenido cifrado * / y 62 es ls_out, ll_outLen) el entonces 63 es el IF rb_utf8. la comprueba el entonces // UTF-codificado. 8 64 sle_2.Text =lnv_cryp.of_utf8ToGbk (ls_out, ll_outLen) 65 más 66 sle_2.Text = cadena (ls_out) 67 END IF 68 más 69 de mensaje ( "" , " 解密失败" ) 70 END IF
botón SM4 de referencia particular a la codificación y descodificación de la w_encrypt código
Descargar: https: //download.csdn.net/download/my_aa/12309197