Created
May 5, 2016 21:01
-
-
Save elevenetc/201cacc7a0dacdd02c63ff192bd78a50 to your computer and use it in GitHub Desktop.
Symmetric and asymmetric encryption
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Symmetric and asymmetric encription | |
//http://www.developer.com/ws/android/encrypting-with-android-cryptography-api.html | |
public class SymmetricAlgorithmAES extends Activity { | |
static final String TAG = "SymmetricAlgorithmAES"; | |
@Override | |
public void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.symm); | |
// Original text | |
String theTestText = "This is just a simple test"; | |
TextView tvorig = (TextView)findViewById(R.id.tvorig); | |
tvorig.setText("\n[ORIGINAL]:\n" + theTestText + "\n"); | |
// Set up secret key spec for 128-bit AES encryption and decryption | |
SecretKeySpec sks = null; | |
try { | |
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); | |
sr.setSeed("any data used as random seed".getBytes()); | |
KeyGenerator kg = KeyGenerator.getInstance("AES"); | |
kg.init(128, sr); | |
sks = new SecretKeySpec((kg.generateKey()).getEncoded(), "AES"); | |
} catch (Exception e) { | |
Log.e(TAG, "AES secret key spec error"); | |
} | |
// Encode the original data with AES | |
byte[] encodedBytes = null; | |
try { | |
Cipher c = Cipher.getInstance("AES"); | |
c.init(Cipher.ENCRYPT_MODE, sks); | |
encodedBytes = c.doFinal(theTestText.getBytes()); | |
} catch (Exception e) { | |
Log.e(TAG, "AES encryption error"); | |
} | |
TextView tvencoded = (TextView)findViewById(R.id.tvencoded); | |
tvencoded.setText("[ENCODED]:\n" + | |
Base64.encodeToString(encodedBytes, Base64.DEFAULT) + "\n"); | |
// Decode the encoded data with AES | |
byte[] decodedBytes = null; | |
try { | |
Cipher c = Cipher.getInstance("AES"); | |
c.init(Cipher.DECRYPT_MODE, sks); | |
decodedBytes = c.doFinal(encodedBytes); | |
} catch (Exception e) { | |
Log.e(TAG, "AES decryption error"); | |
} | |
TextView tvdecoded = (TextView)findViewById(R.id.tvdecoded); | |
tvdecoded.setText("[DECODED]:\n" + new String(decodedBytes) + "\n"); | |
} | |
} | |
public class AsymmetricAlgorithmRSA extends Activity { | |
static final String TAG = "AsymmetricAlgorithmRSA"; | |
@Override | |
public void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.asym); | |
// Original text | |
String theTestText = "This is just a simple test!"; | |
TextView tvorig = (TextView)findViewById(R.id.tvorig); | |
tvorig.setText("\n[ORIGINAL]:\n" + theTestText + "\n"); | |
// Generate key pair for 1024-bit RSA encryption and decryption | |
Key publicKey = null; | |
Key privateKey = null; | |
try { | |
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); | |
kpg.initialize(1024); | |
KeyPair kp = kpg.genKeyPair(); | |
publicKey = kp.getPublic(); | |
privateKey = kp.getPrivate(); | |
} catch (Exception e) { | |
Log.e(TAG, "RSA key pair error"); | |
} | |
// Encode the original data with RSA private key | |
byte[] encodedBytes = null; | |
try { | |
Cipher c = Cipher.getInstance("RSA"); | |
c.init(Cipher.ENCRYPT_MODE, privateKey); | |
encodedBytes = c.doFinal(theTestText.getBytes()); | |
} catch (Exception e) { | |
Log.e(TAG, "RSA encryption error"); | |
} | |
TextView tvencoded = (TextView)findViewById(R.id.tvencoded); | |
tvencoded.setText("[ENCODED]:\n" + | |
Base64.encodeToString(encodedBytes, Base64.DEFAULT) + "\n"); | |
// Decode the encoded data with RSA public key | |
byte[] decodedBytes = null; | |
try { | |
Cipher c = Cipher.getInstance("RSA"); | |
c.init(Cipher.DECRYPT_MODE, publicKey); | |
decodedBytes = c.doFinal(encodedBytes); | |
} catch (Exception e) { | |
Log.e(TAG, "RSA decryption error"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment