/*
* Copyright 2015 Rocko (http://rocko.xyz) <rocko.zxp@gmail.com>.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package xyz.rocko.security;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import xyz.rocko.security.config.SecurityConfig;
import xyz.rocko.security.databinding.MainActivityBinding;
import xyz.rocko.security.security.AESCipherStrategy;
import xyz.rocko.security.security.CipherStrategy;
import xyz.rocko.security.security.DESCipherStrategy;
import xyz.rocko.security.security.RSACipherStrategy;
public class MainActivity extends AppCompatActivity {
private MainActivityBinding mBinding;
RSACipherStrategy rsaCipherStrategy = new RSACipherStrategy();
CipherStrategy aesCipherStrategy = new AESCipherStrategy(SecurityConfig.KEY);
CipherStrategy desCipherStrategy = new DESCipherStrategy(SecurityConfig.KEY);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.main_activity);
setSupportActionBar(mBinding.toolbar);
}
public void onClick(View v) {
switch (v.getId()) { // Note: 加解密最好不要放在主线程,demo 为了简单展示
case R.id.encrypt:
encrypt();
break;
case R.id.decrypt:
decrypt();
break;
}
}
/**
* 加密
*/
private void encrypt() {
String sourceContent = mBinding.sourceContent.getText().toString().trim();
// rsa 公钥加密
rsaCipherStrategy.initPublicKey(SecurityConfig.RSA_PUCLIC_KEY);
String rsaEncrypt = rsaCipherStrategy.encrypt(sourceContent);
// aes
String aesEncrypt = aesCipherStrategy.encrypt(sourceContent);
//des
String desEncrypt = desCipherStrategy.encrypt(sourceContent);
mBinding.encryptRsa.setText(rsaEncrypt);
mBinding.encryptAes.setText(aesEncrypt);
mBinding.encryptDes.setText(desEncrypt);
}
/**
* 解密
*/
private void decrypt() {
String rsaEncrypt = mBinding.encryptRsa.getText().toString().trim();
String aesEncrypt = mBinding.encryptAes.getText().toString().trim();
String desEncrypt = mBinding.encryptDes.getText().toString().trim();
// rsa 私钥解密
rsaCipherStrategy.initPrivateKey(SecurityConfig.RSA_PRIVATE_KEY);
String rsaDecrypt = rsaCipherStrategy.decrypt(rsaEncrypt);
// aes
String aesDecrypt = aesCipherStrategy.decrypt(aesEncrypt);
// des
String desDecrypt = desCipherStrategy.decrypt(desEncrypt);
mBinding.decryptRsa.setText(rsaDecrypt);
mBinding.decryptAes.setText(aesDecrypt);
mBinding.decryptDes.setText(desDecrypt);
}
}