标签: pidcrypt

php mcrypt to javascript aes integration

我正在尝试使用javascript来编码AES-256-CBC和php mcrypt库来解码数据,反之亦然.

我知道javascript的问题本质以及任何人都看到密钥的事实,但我使用javascript作为非Web环境的脚本工具 - 所以不要担心它.

我找到了pidder https://sourceforge.net/projects/pidcrypt/

并使用演示页面加密了一些数据,然后尝试通过php解密它,但是出了点问题,我似乎无法找到什么......我使用相同的键,两端都是32字节的字符串

任何指针将不胜感激

~~~

$encrypted = "string after pidder encryption";  

$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_256,'',MCRYPT_MODE_CBC,'');    

$iv_size = mcrypt_enc_get_iv_size($cipher);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

mcrypt_generic_init($cipher, $key, $iv);


$encrypted = base64_decode($encrypted);

echo "after b64decode: " . $encrypted . "\n\n\n";

$encrypted = mdecrypt_generic($cipher, $encrypted);

echo "decrypt:" . $encrypted;
Run Code Online (Sandbox Code Playgroud)

~~~

javascript php encryption aes pidcrypt

8
推荐指数
1
解决办法
1487
查看次数

在Android中实现RSA Publickey

我已经使用php,javascript和android应用程序使用库实现了RSA加密:

  1. php侧的phpseclib

  2. pidcrypt for javascript

  3. bouncrycastle版本(bcprov-jdk14-151)用于anrdroid serviceprovider

我有我的加密机制,如:

user->request->publickey
     ->server->generate(publickey,privatekey) and save private key into Database
     ->server->sendpublickey->user
     ->user->encryptdata->send->server->decrypt
Run Code Online (Sandbox Code Playgroud)

但是这种机制在javascript和php加密和解密之间工作正常,但在服务器发送公钥时在android平台上.它无法解密公钥.

现在我为此测试了不同的场景

PHP KeyGenerating

$rsa = new Crypt_RSA();
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
$rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1);
define('CRYPT_RSA_EXPONENT', 65537);
extract($rsa->createKey(1024));
Run Code Online (Sandbox Code Playgroud)

PHP DecryptingCode

$rsa = new Crypt_RSA();
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
$rsa->loadKey($pri);
$binaryCiphertext=base64_decode($encrypted);
$strBase64DecryptedData=$rsa->decrypt($binaryCiphertext);
$plaintText = base64_decode($strBase64DecryptedData);
Run Code Online (Sandbox Code Playgroud)

就像我的公钥一样.

-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBALrBdN8F83hT2+pBsAwiNx+v3FWp51IdEElE8UvVhfZYmePbitpzLcJi
jZ4/tvRFXJGhqa3PKPUQkH2F4VrHruA2kNceiL/Btywc9oM+tDMeX1jcRKwXwK1k
KdccKwn0qywG6YxQuqWQIotOfV+IIuhcHdaHBl6CZ05/cBo6AlMlAgMBAAE=
-----END RSA PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)
  1. 从服务器和服务器请求密钥生成公钥和私钥,并将公钥MODULUSEXPONENT发送到Android应用程序并应用此代码:

    RSAPublicKeySpec rsaPublicKeySpec = new RSAPublicKeySpec(mod,exp);
    KeyFactory keyFactory = KeyFactory.getInstance("RSA","BS");
    PublicKey publicKey = keyFactory.generatePublic(rsaPublicKeySpec);
    Cipher cipher …
    Run Code Online (Sandbox Code Playgroud)

android rsa bouncycastle phpseclib pidcrypt

6
推荐指数
1
解决办法
1413
查看次数

标签 统计

pidcrypt ×2

aes ×1

android ×1

bouncycastle ×1

encryption ×1

javascript ×1

php ×1

phpseclib ×1

rsa ×1