Java 加密密码以发布到PHP-Android

Java 加密密码以发布到PHP-Android,java,android,encryption,Java,Android,Encryption,你好!我想知道是否有什么好的方法可以在Android上进行加密,而不用编写自己的函数 有我应该使用的库吗?您可以使用AES、DES和3DES,它们都包含在java中。我在这里发布了一个使用DES加密/解密的简单程序 导入java.security.spec.KeySpec import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.cry

你好!我想知道是否有什么好的方法可以在Android上进行加密,而不用编写自己的函数


有我应该使用的库吗?

您可以使用AES、DES和3DES,它们都包含在java中。我在这里发布了一个使用DES加密/解密的简单程序

导入java.security.spec.KeySpec

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

 class DESEncryption {

    private static final String UNICODE_FORMAT = "UTF8";
    public static final String DES_ENCRYPTION_SCHEME = "DES";
    private KeySpec myKeySpec;
    private SecretKeyFactory mySecretKeyFactory;
    private Cipher cipher;
    byte[] keyAsBytes;
    private String myEncryptionKey;
    private String myEncryptionScheme;
    SecretKey key;

    public DESEncryption() throws Exception
    {
        myEncryptionKey = "ThisIsSecretEncryptionKey";
        myEncryptionScheme = DES_ENCRYPTION_SCHEME;
        keyAsBytes = myEncryptionKey.getBytes(UNICODE_FORMAT);
        myKeySpec = new DESKeySpec(keyAsBytes);
        mySecretKeyFactory = SecretKeyFactory.getInstance(myEncryptionScheme);
        cipher = Cipher.getInstance(myEncryptionScheme);
        key = mySecretKeyFactory.generateSecret(myKeySpec);
    }

    /**
     * Method To Encrypt The String
     */
    public String encrypt(String unencryptedString) {
        String encryptedString = null;
        try {
            cipher.init(Cipher.ENCRYPT_MODE, key);
            byte[] plainText = unencryptedString.getBytes(UNICODE_FORMAT);
            byte[] encryptedText = cipher.doFinal(plainText);
            BASE64Encoder base64encoder = new BASE64Encoder();
            encryptedString = base64encoder.encode(encryptedText);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    /**
     * Method To Decrypt An Ecrypted String
     */
    public String decrypt(String encryptedString) {
        String decryptedText=null;
        try {
            cipher.init(Cipher.DECRYPT_MODE, key);
            BASE64Decoder base64decoder = new BASE64Decoder();
            byte[] encryptedText = base64decoder.decodeBuffer(encryptedString);
            byte[] plainText = cipher.doFinal(encryptedText);
            decryptedText= bytes2String(plainText);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return decryptedText;
    }


    private static String bytes2String(byte[] bytes) {
        StringBuffer stringBuffer = new StringBuffer();
        for (int i = 0; i < bytes.length; i++) {
            stringBuffer.append((char) bytes[i]);
        }
        return stringBuffer.toString();
    }

    /**
     * Testing the DES Encryption And Decryption Technique
     */
    public static void main(String args []) throws Exception
    {
        DESEncryption myEncryptor= new DESEncryption();

        String stringToEncrypt="Sanjaal.com";
        String encrypted=myEncryptor.encrypt(stringToEncrypt);
        String decrypted=myEncryptor.decrypt(encrypted);

        System.out.println("String To Encrypt: "+stringToEncrypt);
        System.out.println("Encrypted Value :" + encrypted);
        System.out.println("Decrypted Value :"+decrypted);

    }  

}

在安卓上使用加密功能需要一点时间,但我让它正常工作了。谢谢!如果其他人发现了这个,这里有一个雄性化的版本:1。您的代码有一些html构件。请把那些拿走。2.你不应该建议人们使用DES。使用AES或3DES或河豚。DES很容易被强制执行。3.您需要具有密文完整性,因此应该添加HMAC,甚至更容易使用GCM之类的身份验证模式。4.始终使用一个完全限定的密码字符串,如“AES/CBC/PKCS5Padding”(也是@Boncey),我将研究AES加密。我本来打算这么做的,但我现在只是测试。谢谢你的建议:)