美文网首页
Java&Android&PHP 通用AES加密

Java&Android&PHP 通用AES加密

作者: Il_mondo | 来源:发表于2018-09-19 11:36 被阅读11次

PHP

<?php
class Security {
    public static function encrypt($input, $key) {
        $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); 
        $input = Security::pkcs5_pad($input, $size); 
        $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, ''); 
        $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); 
        mcrypt_generic_init($td, $key, $iv); 
        $data = mcrypt_generic($td, $input); 
        mcrypt_generic_deinit($td); 
        mcrypt_module_close($td); 
        $data = base64_encode($data); 
        return $data; 
    } 

    private static function pkcs5_pad ($text, $blocksize) { 
        $pad = $blocksize - (strlen($text) % $blocksize); 
        return $text . str_repeat(chr($pad), $pad); 
    } 

    public static function decrypt($sStr, $sKey) {
        $decrypted= mcrypt_decrypt(
            MCRYPT_RIJNDAEL_128,
            $sKey, 
            base64_decode($sStr), 
            MCRYPT_MODE_ECB
        );
        $dec_s = strlen($decrypted); 
        $padding = ord($decrypted[$dec_s-1]); 
        $decrypted = substr($decrypted, 0, -$padding);
        return $decrypted;
    }   
}
?>

Android

private static String TRANSFORMATION = "AES/ECB/PKCS5Padding";

public static String encrypt(String input, String key) throws Exception {
   SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
   Cipher cipher = Cipher.getInstance(TRANSFORMATION);
   cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
   return new String(Base64.encode(cipher.doFinal(input.getBytes()), Base64.NO_WRAP));
 }

public static String decrypt(String input, String key) throws Exception {
   SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
   Cipher cipher = Cipher.getInstance(TRANSFORMATION);
   cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
   return new String(cipher.doFinal(Base64.decode(input, Base64.NO_WRAP)));
}

Java

public static String encrypt(String input, String key){
        byte[] crypted = null;
        try{
            SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, skey);
            crypted = cipher.doFinal(input.getBytes());
        }catch(Exception e){
            System.out.println(e.toString());
        }

        return new String(Base64.encodeBase64(crypted));
    }

    public static String decrypt(String input, String key){
        byte[] output = null;
        try{
            SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            cipher.init(Cipher.DECRYPT_MODE, skey);
            output = cipher.doFinal(Base64.decodeBase64(input));
        }catch(Exception e){
            System.out.println(e.toString());
        }
        return new String(output);
    }

相关文章

网友评论

      本文标题:Java&Android&PHP 通用AES加密

      本文链接:https://www.haomeiwen.com/subject/eyzbnftx.html