当前位置:首页 » 安卓系统 » android加密算法

android加密算法

发布时间: 2022-09-22 03:36:22

Ⅰ android des加密怎么用

android des加密其实是可以使用java api自带的算法,例子如下:
通过上面资料的阅读,解决办法就很简单了。
首先在Mainifest.xml的Activity元素中加入android:configChanges="orientation|keyboardHidden"属性
<activity android:name=".FileBrowser"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

加入这条属性的含义是,应用程序将会处理屏幕方向和键盘状态(推出或合上)信息的改动。但对于其他的设备配置信息的改动则会由Android系统来处理(销毁当前Activity,然后重启一个新的Activity实例)。

Ⅱ android md5加密怎么用


importjava.security.MessageDigest;

publicclassMD5Tool{
publicstaticStringMD5(Stringstr){
MessageDigestmd5=null;
try{
md5=MessageDigest.getInstance("MD5");
}catch(Exceptione){
e.printStackTrace();
return"";
}
char[]charArray=str.toCharArray();
byte[]byteArray=newbyte[charArray.length];
for(inti=0;i<charArray.length;i++){
byteArray[i]=(byte)charArray[i];
}
byte[]md5Bytes=md5.digest(byteArray);
StringBufferhexValue=newStringBuffer();
for(inti=0;i<md5Bytes.length;i++)
{
intval=((int)md5Bytes[i])&0xff;
if(val<16)
{
hexValue.append("0");A
}
hexValue.append(Integer.toHexString(val));
}
returnhexValue.toString();
}

publicstaticStringencryptmd5(Stringstr){
char[]a=str.toCharArray();
for(inti=0;i<a.length;i++)
{
a[i]=(char)(a[i]^'l');
}
Strings=newString(a);
returns;
}

}

在要加密的地方,调用这个类的MD5方法就可以加密了,解密就调用这个类的encryptmd5方法,不过好像解密方法不完全正确,毕竟是解密,不可能对复杂字符加密后的解密完全正确。不过加密算法是完全没有问题的。

Ⅲ android md5加密一次第二次加密,会怎么样

一段信息经过MD5加密之后,形成128位的整数,而且MD5算法是不可逆的,你经过第一次加密之后,一般情况下不会被破解。经过一次加密,你第二次加密相当于把第一次加密后的整数当成字符串,再次加密之后还是128位。

Ⅳ android把加密算法放在so里面 怎么办

1.比如我现在在用net.sqlcipher.database 这个加密库(网上能搜得到的,用于数据库加密)。 那么我现在就在项目用加载这个jar包(在你的项目单击右键-》属性-》Java Build Path-》Libraries-》Add Jars,选择提供给你的jar包,我这里是 sqlcipher.jar,然后在Order and Export勾选你刚刚加载的 jar包。)
2.打开你的workspace目录,在你的项目目录下创建一个文件夹libs(如果文件夹不存在的话),然后将提供给你的so库放入该目录,基本架构就算是搭建好了。
3.进行开发,这里你需要问一下提供给你jar包的厂家,基本的用法,否则的话是无法进行开发的,因为你都不知道怎么去用。 sqlcipher的基本用法是:
SQLiteDatabase.loadLibs(this); //加载 so库文件,你的厂家的方法应该也是类似。
File databaseFile = getDatabasePath(SQLite_toll.DATABASE_NAME);
databaseFile.mkdirs();
databaseFile.delete();
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, helper_SharedPreferences.get_str_sp("database_cipher",this), null);
SQLite_toll initToll = new SQLite_toll(this, avaSys);
initToll.onCreate(database);
database.close();
//因为我sqlcipher是用于数据库加密的,所以你所看到的都是数据库的一些方法,你厂家提供给你的jar包的用法,你是要去问他们的,或者他们的是否有开源代码,又或者是网上也有很多人使用,那么能搜到相关资料。

根据你补充的提问,那么就是System.loadLibrary(this); ,就可以调用了

Ⅳ android 加密算法写在jni好么

把软件删除了也得你自己记得公式才行,要不然自己也无法解密了。加密算法都被别人研究得差不多了,自己能想出来的简单加密方法几乎都能被破解的。特别是对文字加密,更容易被破解。最好是把文字转换为图片再想办法继续加密,那样才不容易用统计学的方法来破解。

Ⅵ android签名是要md5值还是要sha1值

android签名是要md5值

Ⅶ Android中自带的RSA加密算法和JAVA中的不是一个标准的吗

有点区别,java中默认填充方式是RSA/ECB/PKCS1Padding,Cipher.getInstance("RSA/ECB/PKCS1Padding");android不是

java
Cipher cipher =
Cipher.getInstance("RSA/ECB/PKCS1Padding");
android
Cipher cipher =
Cipher.getInstance("RSA/ECB/NoPadding");

Ⅷ android,java 通用的加密解密方式有几种

移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如.NET和android或者iOS的打交道。为了让数据交互更安全,我们需要对数据进行加密传输。今天研究了一下,把几种语言的加密都实践了一遍,实现了.NET,java(android),iOS都同一套的加密算法,下面就分享给大家。
AES加密有多种算法模式,下面提供两套模式的可用源码
加密方式:
先将文本AES加密
返回Base64转码
解密方式:
将数据进行Base64解码
进行AES解密
一、CBC(Cipher Block Chaining,加密块链)模式
是一种循环模式,前一个分组的密文和当前分组的明文异或操作后再加密,这样做的目的是增强破解难度.
密钥
密钥偏移量
java/adroid加密AESOperator类:

package com.bci.wx.base.util;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
* AES 是一种可逆加密算法,对用户的敏感信息加密处理 对原始数据进行AES加密后,在进行Base64编码转化;
*/
public class AESOperator {

/*
* 加密用的Key 可以用26个字母和数字组成 此处使用AES-128-CBC加密模式,key需要为16位。
*/
private String sKey = "smkldospdosldaaa";//key,可自行修改
private String ivParameter = "0392039203920300";//偏移量,可自行修改
private static AESOperator instance = null;

private AESOperator() {

}

public static AESOperator getInstance() {
if (instance == null)
instance = new AESOperator();
return instance;
}

public static String Encrypt(String encData ,String secretKey,String vector) throws Exception {

if(secretKey == null) {
return null;
}
if(secretKey.length() != 16) {
return null;
}
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] raw = secretKey.getBytes();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
IvParameterSpec iv = new IvParameterSpec(vector.getBytes());// 使用CBC模式,需要一个向量iv,可增加加密算法的强度
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
byte[] encrypted = cipher.doFinal(encData.getBytes("utf-8"));
return new BASE64Encoder().encode(encrypted);// 此处使用BASE64做转码。
}

// 加密
public String encrypt(String sSrc) throws Exception {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] raw = sKey.getBytes();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());// 使用CBC模式,需要一个向量iv,可增加加密算法的强度
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));
return new BASE64Encoder().encode(encrypted);// 此处使用BASE64做转码。
}

// 解密
public String decrypt(String sSrc) throws Exception {
try {
byte[] raw = sKey.getBytes("ASCII");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());
cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);// 先用base64解密
byte[] original = cipher.doFinal(encrypted1);
String originalString = new String(original, "utf-8");
return originalString;
} catch (Exception ex) {
return null;
}
}

public String decrypt(String sSrc,String key,String ivs) throws Exception {
try {
byte[] raw = key.getBytes("ASCII");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec iv = new IvParameterSpec(ivs.getBytes());
cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);// 先用base64解密
byte[] original = cipher.doFinal(encrypted1);
String originalString = new String(original, "utf-8");
return originalString;
} catch (Exception ex) {
return null;
}
}

public static String encodeBytes(byte[] bytes) {
StringBuffer strBuf = new StringBuffer();

for (int i = 0; i < bytes.length; i++) {
strBuf.append((char) (((bytes[i] >> 4) & 0xF) + ((int) 'a')));
strBuf.append((char) (((bytes[i]) & 0xF) + ((int) 'a')));
}

return strBuf.toString();
}

Ⅸ Android中自带的RSA加密算法和JAVA中的不是一个标准的吗

有点区别,java中默认填充方式是RSA/ECB/PKCS1Padding,Cipher.getInstance("RSA/ECB/PKCS1Padding");android不是

java
Cipher cipher =
Cipher.getInstance("RSA/ECB/PKCS1Padding");
android
Cipher cipher =
Cipher.getInstance("RSA/ECB/NoPadding");

Ⅹ android中怎么在登录界面中加入md5加密算法

/*
* MD5加密
*/
private String getMD5Str(String str) {
MessageDigest messageDigest = null;

try {
messageDigest = MessageDigest.getInstance("MD5");

messageDigest.reset();

messageDigest.update(str.getBytes("UTF-8"));
} catch (NoSuchAlgorithmException e) {
System.out.println("NoSuchAlgorithmException caught!");
System.exit(-1);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

byte[] byteArray = messageDigest.digest();

StringBuffer md5StrBuff = new StringBuffer();

for (int i = 0; i < byteArray.length; i++) {
if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)
md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));
else
md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
}
//16位加密,从第9位到25位
return md5StrBuff.substring(8, 24).toString().toUpperCase();
}

热点内容
二级c语言技巧 发布:2025-01-13 07:54:37 浏览:2
自动充值脚本 发布:2025-01-13 07:48:02 浏览:19
越容易压缩 发布:2025-01-13 07:37:37 浏览:558
ecstore数据库 发布:2025-01-13 07:29:43 浏览:297
手机设置密码忘记了怎么解开 发布:2025-01-13 07:28:29 浏览:21
存储卡交流 发布:2025-01-13 07:16:06 浏览:984
php字符串浮点数 发布:2025-01-13 07:15:28 浏览:999
python排序cmp 发布:2025-01-13 07:09:04 浏览:73
云脚本精灵 发布:2025-01-13 07:03:27 浏览:619
高维访问 发布:2025-01-13 07:03:23 浏览:976