\\system\\app
这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\\data\\文件夹中。下面是详细的介绍:
\\system\\app\\AlarmClock.apk 闹钟
\\system\\app\\AlarmClock.odex
\\system\\app\\Browser.apk 浏览器
\\system\\app\\Browser.odex
\\system\\app\\Bugreport.apk Bug报告
\\system\\app\\Bugreport.odex
\\system\\app\\Calculator.apk 计算器
\\system\\app\\Calculator.odex
\\system\\app\\Calendar.apk 日历
\\system\\app\\Calendar.odex
\\system\\app\\CalendarProvider.apk 日历提供
\\system\\app\\CalendarProvider.odex
\\system\\app\\Camera.apk 照相机
\\system\\app\\Camera.odex
\\system\\app\\com.amazon.mp3.apk 亚马逊音乐
\\system\\app\\Contacts.apk 联系人
\\system\\app\\Contacts.odex
\\system\\app\\DownloadProvider.apk 下载提供
\\system\\app\\DownloadProvider.odex
\\system\\app\\DrmProvider.apk DRM数字版权提供
\\system\\app\\DrmProvider.odex
\\system\\app\\Email.apk 电子邮件客户端
\\system\\app\\Email.odex
\\system\\app\\FieldTest.apk 测试程序
\\system\\app\\FieldTest.odex
\\system\\app\\GDataFeedsProvider.apk GoogleData提供
\\system\\app\\GDataFeedsProvider.odex
\\system\\app\\Gmail.apk Gmail电子邮件
\\system\\app\\Gmail.odex
\\system\\app\\GmailProvider.apk Gmail提供
\\system\\app\\GmailProvider.odex
\\system\\app\\GoogleApps.apk 谷歌程序包
\\system\\app\\GoogleApps.odex
\\system\\app\\GoogleSearch.apk 搜索工具
\\system\\app\\GoogleSearch.odex
\\system\\app\\gtalkservice.apk GTalk服务
\\system\\app\\gtalkservice.odex
\\system\\app\\HTMLViewer.apk HTML查看器
\\system\\app\\HTMLViewer.odex
\\system\\app\\IM.apk 即使通讯组件包含MSN、yahoo通
\\system\\app\\ImCredentialProvider.apk
\\system\\app\\ImProvider.apk
\\system\\app\\ImProvider.odex
\\system\\app\\Launcher.apk 启动加载器
\\system\\app\\Launcher.odex
\\system\\app\\Maps.apk 电子地图
\\system\\app\\Maps.odex
\\system\\app\\MediaProvider.apk 多媒体播放提供
\\system\\app\\MediaProvider.odex
\\system\\app\\Mms.apk 短信、彩信
\\system\\app\\Mms.odex
\\system\\app\\Music.apk 音乐播放器
\\system\\app\\Music.odex
\\system\\app\\MyFaves.apk T-Mobile MyFaves程序
\\system\\app\\MyFaves.odex
\\system\\app\\PackageInstaller.apk apk安装程序
\\system\\app\\PackageInstaller.odex
\\system\\app\\Phone.apk 电话拨号器
\\system\\app\\Phone.odex
\\system\\app\\Settings.apk 系统设置
\\system\\app\\Settings.odex
\\system\\app\\SettingsProvider.apk 设置提供
\\system\\app\\SettingsProvider.odex
\\system\\app\\SetupWizard.apk 设置向导
\\system\\app\\SetupWizard.odex
\\system\\app\\SoundRecorder.apk 录音工具
\\system\\app\\SoundRecorder.odex
\\system\\app\\Street.apk 街景地图
\\system\\app\\Street.odex
\\system\\app\\Sync.apk 同步程序
\\system\\app\\Sync.odex
\\system\\app\\Talk.apk 语音程序
\\system\\app\\Talk.odex
\\system\\app\\TelephonyProvider.apk 电话提供
\\system\\app\\TelephonyProvider.odex
\\system\\app\\Updater.apk 更新程序
\\system\\app\\Updater.odex
\\system\\app\\Vending.apk 制造商信息
\\system\\app\\Vending.odex
\\system\\app\\VoiceDialer.apk 语音拨号器
\\system\\app\\VoiceDialer.odex
\\system\\app\\YouTube.apk Youtube视频
\\system\\app\\YouTube.odex
\\system\\bin
这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux系统自带的组件,Android手机网就主要文件做下简单的分析介绍:
\\system\\bin\\akmd
\\system\\bin\\am
\\system\\bin\\app_process 系统进程
\\system\\bin\\dalvikvm Dalvik虚拟机宿主
\\system\\bin\\dbus-daemon 系统BUS总线监控
\\system\\bin\\debuggerd 调试器
\\system\\bin\\debug_tool 调试工具
\\system\\bin\\dexopt DEX选项
\\system\\bin\\dhcpcd DHCP服务器
\\system\\bin\\mpstate 状态抓取器
\\system\\bin\\mpsys 系统抓取器
\\system\\bin\\dvz
\\system\\bin\\fillup
\\system\\bin\\flash_image 闪存映像
\\system\\bin\\hciattach
\\system\\bin\\hcid HCID内核
\\system\\bin\\hostapd
\\system\\bin\\hostapd_cli
\\system\\bin\\htclogkernel
\\system\\bin\\input
\\system\\bin\\installd
\\system\\bin\\itr
\\system\\bin\\linker
\\system\\bin\\logcat Logcat日志打印
\\system\\bin\\logwrapper
\\system\\bin\\mediaserver
\\system\\bin\\monkey
\\system\\bin\\mountd 存储挂载器
\\system\\bin\\netcfg 网络设置
\\system\\bin\\ping Ping程序
\\system\\bin\\playmp3 MP3播放器
\\system\\bin\\pm 包管理器
\\system\\bin\\qemud QEMU虚拟机
\\system\\bin\\radiooptions 无线选项
\\system\\bin\\rild RIL组件
\\system\\bin\\sdptool
\\system\\bin\\stil
\\system\\bin\\service
\\system\\bin\\servicemanager 服务管理器
\\system\\bin\\sh
\\system\\bin\\ssltest SSL测试
\\system\\bin\\surfaceflinger 触摸感应驱动
\\system\\bin\\svc 服务
\\system\\bin\\system_server
\\system\\bin\\telnetd Telnet组件
\\system\\bin\\toolbox
\\system\\bin\\wlan_loader
\\system\\bin\\wpa_cli
\\system\\bin\\wpa_supplicant
\\system\\etc
从文件夹名称来看保存的都是系统的配置文件,比如APN接入点设置等核心配置。
\\system\\etc\\apns-conf.xml APN接入点配置文件
\\system\\etc\\AudioFilter.csv 音频过滤器配置文件
\\system\\etc\\AudioPara4.csv
\\system\\etc\\bookmarks.xml 书签数据库
\\system\\etc\\dbus.conf 总线监视配置文件
\\system\\etc\\dhcpcd
\\system\\etc\\event-log-tags
\\system\\etc\\favorites.xml 收藏夹
\\system\\etc\\firmware 固件信息
\\system\\etc\\gps.conf GPS设置文件
\\system\\etc\\hcid.conf内核HCID配置文件
\\system\\etc\\hosts 网络DNS缓存
\\system\\etc\\init.goldfish.sh
\\system\\etc\\location 定位相关
\\system\\etc\\mountd.conf 存储挂载配置文件
\\system\\etc\\NOTICE.html 提示网页
\\system\\etc\\permissions.xml 权限许可
\\system\\etc\\pvplayer.conf
\\system\\etc\\security
\\system\\etc\\wifi WLAN相关组件
\\system\\etc\\dhcpcd\\dhcpcd-hooks
\\system\\etc\\dhcpcd\\dhcpcd-run-hooks
\\system\\etc\\dhcpcd\\dhcpcd.conf
\\system\\etc\\dhcpcd\\dhcpcd-hooks\\01-test
\\system\\etc\\dhcpcd\\dhcpcd-hooks\\20-dns.conf
\\system\\etc\\dhcpcd\\dhcpcd-hooks\\95-configured
\\system\\etc\\firmware\\brf6300.bin
\\system\\etc\\location\\gps
\\system\\etc\\location\\gps\\location 定位相关
\\system\\etc\\location\\gps\\nmea GPS数据解析
\\system\\etc\\location\\gps\\properties
\\system\\etc\\security\\cacerts.bks
\\system\\etc\\security\\otacerts.zip OTA下载验证
\\system\\etc\\wifi\\Fw1251r1c.bin
\\system\\etc\\wifi\\tiwlan.ini
\\system\\etc\\wifi\\wpa_supplicant.conf WPA验证组件
\\system\\fonts
字体文件夹,除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库,或一些unicode字库,从T-Mobile G1上可以清楚的看到显示简体中文正常,其中DroidSansFallback.ttf文件大小
\\system\\fonts\\DroidSans-Bold.ttf
\\system\\fonts\\DroidSans.ttf
\\system\\fonts\\DroidSansFallback.ttf
\\system\\fonts\\DroidSansMono.ttf
\\system\\fonts\\DroidSerif-Bold.ttf
\\system\\fonts\\DroidSerif-BoldItalic.ttf
\\system\\fonts\\DroidSerif-Italic.ttf
\\system\\fonts\\DroidSerif-Regular.ttf
\\system\\framework
framework主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架。
\\system\\framework\\am.jar
\\system\\framework\\am.odex
\\system\\framework\\android.awt.jar AWT库
\\system\\framework\\android.awt.odex
\\system\\framework\\android.policy.jar
\\system\\framework\\android.policy.odex
\\system\\framework\\android.test.runner.jar
\\system\\framework\\android.test.runner.odex
\\system\\framework\\com.google.android.gtalkservice.jar GTalk服务
\\system\\framework\\com.google.android.gtalkservice.odex
\\system\\framework\\com.google.android.maps.jar 电子地图库
\\system\\framework\\com.google.android.maps.odex
\\system\\framework\\core.jar 核心库,启动桌面时首先加载这个
\\system\\framework\\core.odex
\\system\\framework\\ext.jar
\\system\\framework\\ext.odex
\\system\\framework\\framework-res.apk
\\system\\framework\\framework-tests.jar
\\system\\framework\\framework-tests.odex
\\system\\framework\\framework.jar
\\system\\framework\\framework.odex
\\system\\framework\\input.jar 输入库
\\system\\framework\\input.odex
\\system\\framework\\itr.jar
\\system\\framework\\itr.odex
\\system\\framework\\monkey.jar
\\system\\framework\\monkey.odex
\\system\\framework\\pm.jar 包管理库
\\system\\framework\\pm.odex
\\system\\framework\\services.jar
\\system\\framework\\services.odex
\\system\\framework\\ssltest.jar
\\system\\framework\\ssltest.odex
\\system\\framework\\svc.jar 系统服务
\\system\\framework\\svc.odex
\\system\\lib
lib目录中存放的主要是系统底层库,如平台运行时库。
\\system\\lib\\libaes.so
\\system\\lib\\libagl.so
\\system\\lib\\libandroid_runtime.so Android运行时库
\\system\\lib\\libandroid_servers.so 系统服务组件
\\system\\lib\\libaudio.so 音频处理
\\system\\lib\\libaudioeq.so EQ均衡器
\\system\\lib\\libaudioflinger.so 音频过滤器
\\system\\lib\\libbluetooth.so 蓝牙组件
\\system\\lib\\libc.so
\\system\\lib\\libcamera.so 超相机组件
\\system\\lib\\libcameraservice.so
\\system\\lib\\libcorecg.so
\\system\\lib\\libcrypto.so 加密组件
\\system\\lib\\libctest.so
\\system\\lib\\libcutils.so
\\system\\lib\\libdbus.so
\\system\\lib\\libdl.so
\\system\\lib\\libdrm1.so DRM解析库
\\system\\lib\\libdrm1_jni.so
\\system\\lib\\libdvm.so
\\system\\lib\\libexif.so
\\system\\lib\\libexpat.so
\\system\\lib\\libFFTEm.so
\\system\\lib\\libGLES_CM.so
\\system\\lib\\libgps.so
\\system\\lib\\libhardware.so
\\system\\lib\\libhgl.so
\\system\\lib\\libhtc_ril.so
\\system\\lib\\libicudata.so
\\system\\lib\\libicui18n.so
\\system\\lib\\libicuuc.so
\\system\\lib\\liblog.so
\\system\\lib\\libm.so
\\system\\lib\\libmedia.so
\\system\\lib\\libmediaplayerservice.so
\\system\\lib\\libmedia_jni.so
\\system\\lib\\libnativehelper.so
\\system\\lib\\libnetutils.so
\\system\\lib\\libOmxCore.so
\\system\\lib\\libOmxH264Dec.so
\\system\\lib\\libpixelflinger.so
\\system\\lib\\libpvasf.so
\\system\\lib\\libpvasfreg.so
\\system\\lib\\libpvauthor.so
\\system\\lib\\libpvcommon.so
\\system\\lib\\libpvdownload.so
\\system\\lib\\libpvdownloadreg.so
\\system\\lib\\libpvmp4.so
\\system\\lib\\libpvmp4reg.so
\\system\\lib\\libpvnet_support.so
\\system\\lib\\libpvplayer.so
\\system\\lib\\libpvrtsp.so
\\system\\lib\\libpvrtspreg.so
\\system\\lib\\libqcamera.so
\\system\\lib\\libreference-ril.so
\\system\\lib\\libril.so
\\system\\lib\\librpc.so
\\system\\lib\\libsgl.so
\\system\\lib\\libsonivox.so
\\system\\lib\\libsoundpool.so
\\system\\lib\\libsqlite.so
\\system\\lib\\libssl.so
\\system\\lib\\libstdc++.so
\\system\\lib\\libsurfaceflinger.so
\\system\\lib\\libsystem_server.so
\\system\\lib\\libthread_db.so
\\system\\lib\\libUAPI_jni.so
\\system\\lib\\libui.so
\\system\\lib\\libutils.so
\\system\\lib\\libvorbisidec.so
\\system\\lib\\libwbxml.so
\\system\\lib\\libwbxml_jni.so
\\system\\lib\\libwebcore.so
\\system\\lib\\libwpa_client.so
\\system\\lib\\libxml2wbxml.so
\\system\\lib\\libz.so
\\system\\lib\\moles
\\system\\lib\\moles\\wlan.ko
㈡ Android API 提供的加密方法有哪些在哪个包里
java.security.
javax.crypto.等
android的加密方法基本继了java 只要找java就行
主流的加密方法 des aes rsa 等都有实现 直接搜索 算法+“java” 或者android 关键字就行了
㈢ 一个安卓Java加密函数,求计算结果
package cn.xinxi.des;import java.security.Key;import java.security.Security;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import org.apache.commons.codec.binary.Hex;import org.bouncycastle.jce.provider.BouncyCastleProvider;public class DES {private static final String str="xinxi";public static void main(String[] args) throws Exception {jdkDES();bcDES();}public static void jdkDES() throws Exception{//生成key//KeyGenerator,密钥生成器KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");keyGenerator.init(56);//指定key size 这里使用默认值56位//声称密钥SecretKey secreKey= keyGenerator.generateKey();byte[] bytesKey = secreKey.getEncoded();//key转换(恢复密钥)//SecretKey convertSecreKey = new SecretKeySpec(bytesKey,"DES");//与下面三行效果貌似差不多DESKeySpec desKeySpec = new DESKeySpec(bytesKey);SecretKeyFactory factory=SecretKeyFactory.getInstance("DES");//System.out.println(keyGenerator.getProvider());Key convertSecreKey = factory.generateSecret(desKeySpec);//加密Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");//加密算法/工作方式/填充方式cipher.init(Cipher.ENCRYPT_MODE,convertSecreKey);//模式(此处是加密模式)、keybyte[] result = cipher.doFinal(str.getBytes());//参数是要被加密的内容System.out.println("JDK DES加密结果:"+Hex.encodeHexString(result));//转成16进制//解密 生成key和key转换 与加密一样cipher.init(Cipher.DECRYPT_MODE, convertSecreKey);//模式(此处是解密模式)、keyresult=cipher.doFinal(result);System.out.println("JDK DES解密结果:"+new String(result));}public static void bcDES() throws Exception{Security.addProvider(new BouncyCastleProvider());//生成keyKeyGenerator keyGenerator = KeyGenerator.getInstance("DES","BC");//System.out.println(keyGenerator.getProvider());keyGenerator.init(56);//指定key size 这里使用默认值56位SecretKey secreKey= keyGenerator.generateKey();byte[] bytesKey = secreKey.getEncoded();//key转换DESKeySpec desKeySpec = new DESKeySpec(bytesKey);SecretKeyFactory factory=SecretKeyFactory.getInstance("DES");Key convertSecreKey = factory.generateSecret(desKeySpec);//加密Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");//加密算法/工作方式/填充方式cipher.init(Cipher.ENCRYPT_MODE,convertSecreKey);//模式(此处是加密模式)、keybyte[] result = cipher.doFinal(str.getBytes());//参数是要被加密的内容System.out.println("BC DES加密结果:"+Hex.encodeHexString(result));//转成16进制//解密 生成key和key转换与加密一样cipher.init(Cipher.DECRYPT_MODE, convertSecreKey);//模式(此处是解密模式)、keyresult=cipher.doFinal(result);System.out.println("BC DES解密结果:"+new String(result));}}是你想要的么?
㈣ 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在用AES加密字符串之后再用base64加密,加密的结果跟ios端不一样,
之前在项目上用到AES256加密解密算法,刚开始在java端加密解密都没有问题,在iOS端加密解密也没有问题。但是奇怪的是在java端加密后的文件在iOS端无法正确解密打开,然后简单测试了一下,发现在java端和iOS端采用相同明文,相同密钥加密后的密文不一样!上网查了资料后发现iOS中AES加密算法采用的填充是PKCS7Padding,而java不支持PKCS7Padding,只支持PKCS5Padding。我们知道加密算法由算法+模式+填充组成,所以这两者不同的填充算法导致相同明文相同密钥加密后出现密文不一致的情况。那么我们需要在java中用PKCS7Padding来填充,这样就可以和iOS端填充算法一致了。
要实现在java端用PKCS7Padding填充,需要用到bouncycastle组件来实现,下面我会提供该包的下载。啰嗦了一大堆,下面是一个简单的测试,上代码!
001 package com.encrypt.file;
002
003
004 import java.io.UnsupportedEncodingException;
005 importjava.security.Key;
006 import java.security.Security;
007
008 importjavax.crypto.Cipher;
009 importjavax.crypto.SecretKey;
010 importjavax.crypto.spec.SecretKeySpec;
011
012 public classAES256Encryption{
013
014 /**
015 * 密钥算法
016 * java6支持56位密钥,bouncycastle支持64位
017 * */
018 public static finalString KEY_ALGORITHM="AES";
019
020 /**
021 * 加密/解密算法/工作模式/填充方式
022 *
023 * JAVA6 支持PKCS5PADDING填充方式
024 * Bouncy castle支持PKCS7Padding填充方式
025 * */
026 public static finalString CIPHER_ALGORITHM="AES/ECB/PKCS7Padding";
027
028 /**
029 *
030 * 生成密钥,java6只支持56位密钥,bouncycastle支持64位密钥
031 * @return byte[] 二进制密钥
032 * */
033 public static byte[] initkey() throwsException{
034
035 // //实例化密钥生成器
036 // Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
037 // KeyGenerator kg=KeyGenerator.getInstance(KEY_ALGORITHM, "BC");
038 // //初始化密钥生成器,AES要求密钥长度为128位、192位、256位
039 //// kg.init(256);
040 // kg.init(128);
041 // //生成密钥
042 // SecretKey secretKey=kg.generateKey();
043 // //获取二进制密钥编码形式
044 // return secretKey.getEncoded();
045 //为了便于测试,这里我把key写死了,如果大家需要自动生成,可用上面注释掉的代码
046 return new byte[] { 0x08, 0x08, 0x04, 0x0b, 0x02, 0x0f, 0x0b, 0x0c,
047 0x01, 0x03, 0x09, 0x07, 0x0c, 0x03, 0x07, 0x0a, 0x04, 0x0f,
048 0x06, 0x0f, 0x0e, 0x09, 0x05, 0x01, 0x0a, 0x0a, 0x01, 0x09,
049 0x06, 0x07, 0x09, 0x0d };
050 }
051
052 /**
053 * 转换密钥
054 * @param key 二进制密钥
055 * @return Key 密钥
056 * */
057 public static Key toKey(byte[] key) throwsException{
058 //实例化DES密钥
059 //生成密钥
060 SecretKey secretKey=newSecretKeySpec(key,KEY_ALGORITHM);
061 returnsecretKey;
062 }
063
064 /**
065 * 加密数据
066 * @param data 待加密数据
067 * @param key 密钥
068 * @return byte[] 加密后的数据
069 * */
070 public static byte[] encrypt(byte[] data,byte[] key) throwsException{
071 //还原密钥
072 Key k=toKey(key);
073 /**
074 * 实例化
075 * 使用 PKCS7PADDING 填充方式,按如下方式实现,就是调用bouncycastle组件实现
076 * Cipher.getInstance(CIPHER_ALGORITHM,"BC")
077 */
078 Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
079 Cipher cipher=Cipher.getInstance(CIPHER_ALGORITHM, "BC");
080 //初始化,设置为加密模式
081 cipher.init(Cipher.ENCRYPT_MODE, k);
082 //执行操作
083 returncipher.doFinal(data);
084 }
085 /**
086 * 解密数据
087 * @param data 待解密数据
088 * @param key 密钥
089 * @return byte[] 解密后的数据
090 * */
091 public static byte[] decrypt(byte[] data,byte[] key) throwsException{
092 //欢迎密钥
093 Key k =toKey(key);
094 /**
095 * 实例化
096 * 使用 PKCS7PADDING 填充方式,按如下方式实现,就是调用bouncycastle组件实现
097 * Cipher.getInstance(CIPHER_ALGORITHM,"BC")
098 */
099 Cipher cipher=Cipher.getInstance(CIPHER_ALGORITHM);
100 //初始化,设置为解密模式
101 cipher.init(Cipher.DECRYPT_MODE, k);
102 //执行操作
103 returncipher.doFinal(data);
104 }
105 /**
106 * @param args
107 * @throws UnsupportedEncodingException
108 * @throws Exception
109 */
110 public static void main(String[] args) {
111
112 String str="AES";
113 System.out.println("原文:"+str);
114
115 //初始化密钥
116 byte[] key;
117 try {
118 key = AES256Encryption.initkey();
119 System.out.print("密钥:");
120 for(int i = 0;i<key.length;i++){
121 System.out.printf("%x", key[i]);
122 }
123 System.out.print("\n");
124 //加密数据
125 byte[] data=AES256Encryption.encrypt(str.getBytes(), key);
126 System.out.print("加密后:");
127 for(int i = 0;i<data.length;i++){
128 System.out.printf("%x", data[i]);
129 }
130 System.out.print("\n");
131
132 //解密数据
133 data=AES256Encryption.decrypt(data, key);
134 System.out.println("解密后:"+newString(data));
135 } catch (Exception e) {
136 // TODO Auto-generated catch block
137 e.printStackTrace();
138 }
139
140 }
141 }
运行程序后的结果截图:
ViewController.m文件
01 //
02 // ViewController.m
03 // AES256EncryptionDemo
04 //
05 // Created by 孙 裔 on 12-12-13.
06 // Copyright (c) 2012年 rich sun. All rights reserved.
07 //
08
09 #import "ViewController.h"
10 #import "EncryptAndDecrypt.h"
11
12 @interface ViewController ()
13
14 @end
15
16 @implementation ViewController
17 @synthesize plainTextField;
18 - (void)viewDidLoad
19 {
20 [super viewDidLoad];
21 // Do any additional setup after loading the view, typically from a nib.
22 }
23
24 - (void)didReceiveMemoryWarning
25 {
26 [super didReceiveMemoryWarning];
27 // Dispose of any resources that can be recreated.
28 }
29 //这个函数实现了用户输入完后点击视图背景,关闭键盘
30 - (IBAction)backgroundTap:(id)sender{
31 [plainTextField resignFirstResponder];
32 }
33
34 - (IBAction)encrypt:(id)sender {
35
36 NSString *plainText = plainTextField.text;//明文
37 NSData *plainTextData = [plainText dataUsingEncoding:NSUTF8StringEncoding];
38
39 //为了测试,这里先把密钥写死
40 Byte keyByte[] = {0x08,0x08,0x04,0x0b,0x02,0x0f,0x0b,0x0c,0x01,0x03,0x09,0x07,0x0c,0x03,
41 0x07,0x0a,0x04,0x0f,0x06,0x0f,0x0e,0x09,0x05,0x01,0x0a,0x0a,0x01,0x09,
42 0x06,0x07,0x09,0x0d};
43 //byte转换为NSData类型,以便下边加密方法的调用
44 NSData *keyData = [[NSData alloc] initWithBytes:keyByte length:32];
45 //
46 NSData *cipherTextData = [plainTextData AES256EncryptWithKey:keyData];
47 Byte *plainTextByte = (Byte *)[cipherTextData bytes];
48 for(int i=0;i<[cipherTextData length];i++){
49 printf("%x",plainTextByte[i]);
50 }
51
52 }
53 @end
㈥ AES加密 在PC上和Android上不一样 怎么解决
你没有指定RNG的Provider
未指定的情况下 Android 2.3以上版本使用的是 随机数序列是 Android's OpenSSL-backed security provider
以下版本是 BouncyCastle Security Provider
JDK 1.7内没有这个Provider, 这个Android自己搞的,你服务端一定解不出来的。
目前Android支持的 RNG有以下几种
Android's OpenSSL-backed security provider 1ASN.1, DER, PkiPath, PKCS7
BouncyCastle Security Provider v1.49 HARMONY (SHA1 digest; SecureRandom; SHA1withDSA signature) Harmony JSSE Provider Android KeyStore security provider
服务端如果也没指定的话,默认使用的是
SUN (DSA key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; X.509 certificates; JKS keystore; PKIX CertPathValidator; PKIX CertPathBuilder; LDAP, Collection CertStores, JavaPolicy Policy; JavaLoginConfig Configuration)
Oracle JDK 1.7 环境下 支持以下
SUN (DSA key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; X.509 certificates; JKS keystore; PKIX CertPathValidator; PKIX CertPathBuilder; LDAP, Collection CertStores, JavaPolicy Policy; JavaLoginConfig Configuration)
Sun RSA signature provider
Sun Elliptic Curve provider (EC, ECDSA, ECDH)
Sun JSSE provider(PKCS12, SunX509 key/trust factories, SSLv3, TLSv1)
SunJCE Provider (implements RSA, DES, Triple DES, AES, Blowfish, ARCFOUR, RC2, PBE, Diffie-Hellman, HMAC)
Sun (Kerberos v5, SPNEGO)
Sun SASL provider(implements client mechanisms for: DIGEST-MD5, GSSAPI, EXTERNAL, PLAIN, CRAM-MD5, NTLM; server mechanisms for: DIGEST-MD5, GSSAPI, CRAM-MD5, NTLM)
XMLDSig (DOM XMLSignatureFactory; DOM KeyInfoFactory)
Sun PC/SC provider
Sun's Microsoft Crypto API provider
你们服务端要是用的 什么 OPENJDK 第三方虚拟机,php什么的话,那就只有天知道支不支持了。
不过你看也知道了 JDK里的都是SUN自己搞的, Android JVM里挂载的不是Android专用的就是第三方开源的,我估计你是找不到一样的 随机数生成器 方案了
㈦ kodi17没有crypto
方法如下:
第一个问题解决方法:到自己的Libsite-packages目录找到Crypto文件,把这个文件开头改成大写
第二个问题解决方法:pip3 install pycryptodome
MyGica Media Center是一款基于kodi 17内核开发的Android多媒体应用,可以解决Android 4.4以下版本无法安装kodi 17以上版本问题。大家手里还有好多使用的是运营商提供的盒子,一般的系统都是安卓4.4的,这个可以使你用上kodi。
基本来说, Mygica Media Center 就是为了低版本 Android 盒子做的一个替代应用,内核是 Kodi 17 修改的。所以 Kodi 能做什么, Mygica Media Center 也都可以做。
㈧ 勒索软件入侵什么系统
自2005年以来,勒索软件已经成为最普遍的网络威胁。根据资料显示,在过去11年间,勒索软件感染已经涉及超过7694到6013起数据泄露事故。 多年来,主要有两种勒索软件:基于加密和基于locker的勒索软件。加密勒索软件通常会加密文件和文件夹、硬盘驱动器等。而Locker勒索软件则会锁定用户设备,通常是基于Android的勒索软件。 新时代勒索软件结合了高级分发技术(例如预先建立基础设施用于快速广泛地分发勒索软件)以及高级开发技术(例如使用crypter以确保逆向工程极其困难)。此外,离线加密方法正越来越流行,其中勒索软件利用合法系统功能(例如微软的CryptoAPI)以消除命令控制通信的需要。 Solutionary公司安全工程及研究小组(SERT)的Terrance DeJesus探讨了这些年以来勒索软件的发展史以及亮点。 AIDS Trojan 第一个勒索软件病毒AIDS Trojan由哈佛大学毕业的Joseph L.Popp在1989年创建。2万张受感染的软盘被分发给国际卫生组织国际艾滋病大会的与会者。该木马的主要武器是对称加密,解密工具很快可恢复文件名称,但这开启了近30年的勒索软件攻击。 Archievus 在第一款勒索恶意软件出现的近二十年(17年)后,另一种勒索软件出现。不同的是,这个勒索软件更加难以移除,并在勒索软件历史上首次使用RSA加密。这个Archiveus Trojan会对系统中“我的文档”目录中所有内容进行加密,并要求用户从特定网站来购买以获取密码解密文件。Archiveus也是第一个使用非对称加密的勒索软件辩题。 2011年无名木马 在五年后,主流匿名支付服务让攻击者更容易使用勒索软件来从受害者收钱,而不会暴露自己身份。在同一年,与勒索软件木马有关的产品开始流行。一款木马勒索软件模拟用户的Windows产品激活通知,告知用户其系统的安装因为欺诈需要重新激活,并定向用户到假的在线激活选项,要求用户拨打国际长途。该恶意软件声称这个呼叫为免费,但实际呼叫被路由到假冒的接线员,并被搁置通话,导致用户需要承担高额国际长途电话费。 Reveton 名为Reveton的主要勒索木马软件开始在整个欧洲蔓延。这个软件是基于Citadel Trojan,该勒索软件会声称计算机受到攻击,并被用于非法活动,用户需要使用预付现金支付服务来支付罚款以解锁系统。在某些情况下,计算机屏幕会显示计算机摄像头记录的画面,让用户感觉非法行为已被记录。此事件发生后不久,涌现很多基于警察的勒索软件,例如Urausy和Tohfy。 研究人员在美国发现Reveton的新变种,声称需要使用MoneyPak卡向FBI支付200元罚款。 Cryptolocker 2013年9月是勒索软件历史的关键时刻,因为CryptoLocker诞生了。CryptoLocker是第一款通过受感染网站下载或者发送给商务人士的电子邮件附件形式的加密恶意软件。CryptoLocker感染快速蔓延,因为威胁着利用了现有的GameOver Zeus僵尸网络基础设施。在2014年的Operation Tovar终止了GameOver Zeus Trojan和CryptoLocker活动。 CryptoLocker利用AES-256lai加密特定扩展名的文件,然后使用命令控制服务器生成的2048位RSA密钥来加密AES-256位密钥。C2服务器位于Tor网络,这让解密很困难,因为攻击者将RSA公钥放在其C2服务器。攻击者威胁称如果在三天内没有收到钱他们将删除私钥。 Cryptodefense 在2014年,CryptoDefense开始出现,这个勒索软件利用Tor和Bitcoin来保持匿名,并使用2048位RSA加密。CryptoDefense使用Windows内置加密CryptoAPI,私钥以纯文本格式保存在受感染计算机—这个漏洞当时没有立即发现。 CryptoDefense的创造者很快推出改名版CrytoWall。与CryptoDefense不同,CryptoWall不会存储加密密钥在用户可获取的地方。CryptoWall很快广泛传播,因为它利用了Cutwail电子邮件活动,该活动主要针对美国地区。CryptoWall也通过漏洞利用工具包来传播,并被发现是Upatre活动中下载的最后有效载荷。 CryptoWall有过多次有效的活动,都是由相同的攻击者执行。CryptoWall展现出恶意软件开发的进步,它可通过添加额外的注册表项以及复制自身到启动文件夹来保持持续能力。在2015年,网络威胁联盟公布覆盖全球的CryptoWall活动,金额达到3.25亿美元。 Sypeng和Koler Sypeng可被认为是第一款锁定用户屏幕并显示FBI处罚警告消息的基于Android的勒索软件。Sypeng通过短消息中假的Adobe Flash更新来传播,需要支付MonkeyPak 200美元。 Koler勒索软件与Sypeng非常类似,它也是用假冒警察处罚,并要求MoneyPak支付赎金。Koler被认为是第一个Lockerworm,因为它包含自我繁殖技术,它可发送自定义消息到每个人的联系人列表,指引他们到特定网址再次下载勒索软件,然后锁定其系统。 CTB-Locker和SimplLocker 与过去其他变体不同,CTB-Locker直接与Tor中C2服务器通信,而不是具有多层基础设施。它也是第一个开始删除windows中Shadow Volume副本的勒索软件变体。在2016年,CTB-Locker更新为针对目标网站。 SimplLocker也在2014年被发现,它被认为是第一款针对Android移动设备的基于Crypto的勒索软件,它会简单地加密文件和文件夹,而不是锁定用户手机。 LockerPin 在去年9月,一款侵略性Android勒索软件开始在美国各地蔓延。ESET安全研究人员发现第一个可重置手机PIN以永久锁定设备的真实恶意软件,被称为LockerPin,该恶意软件会修改受感染设备的锁屏Pin码,让受害者无法进入屏幕。LockerPin随后需要500美元来解锁设备。 勒索软件即服务(RaaS)在2015年开始出现,这些服务通常包含用户友好型勒索软件工具包,这可在黑市购买,售价通常为1000到3000美元,购买者还需要与卖方分享10%到20%的利润。Tox通常被认为是第一款以及最广泛分布的RaaS工具包/勒索软件。 TeslaCrypt TeslaCrypt也出现在2015年,这可能将是持续威胁,因为开发人员制作出四个版本。它首先通过Angler漏洞利用工具包来分发,随后通过其他来分发。TeslaCrypt利用AES-256来加密文件,然后使用RSA-4096来加密AES私钥。Tor内的C2域被用于支付和分发。在其基础设施内包含多层,包括代理服务器。TeslaCrypt本身非常先进,其包含的功能可允许在受害者机器保持灵活性和持久性。在2016年,TeslaCrypt编写者将其主解密没有交给ESET。 LowLevel04和Chimera LowLevel04勒索软件在2015年被发现,主要瞄准远程桌面和终端服务。与其他勒索软件活动不同,攻击者通过远程手动进行,他们远程进入服务器、绘制内部系统。在这种情况下,攻击者被发现会删除应用、安全和系统日志。 Chimera勒索软件在2015年年底被发现,它被认为是第一款doxing勒索软件,它会威胁称在网上公开发布敏感或私人文件。Chimera使用BitMessage的P2P协议用于进行C2通信,这些C2只是Bitmessage节点。 Ransom32和7ev3n Ransom32被认为是第一个使用JavaScript编写的勒索软件。该恶意软件本身比其他软件要大,达到22MB,它使用NW.js,这允许它处理和执行与其他C++或Delphi编写的勒索软件相类似的操作。Ransom32被认为具有革命性,因为它理论上可在多个平台运行,例如Linux、Mac OSX以及windows。 7ev3n勒索软件在过去几个月中开始引起大家关注。在13 bitcoin,它可能是索要赎金最高的勒索软件。7ev3n勒索软件不仅执行典型的加密再勒索,它还会破坏windows系统。该恶意软件开发人员似乎很大程度侧重于确保7ev3n可破坏任何恢复加密文件的方法。7ev3n-HONE$T随后被发布,降低了赎金要求并增加了一些有效的功能。 Locky 在2016年,EDA2和Hidden Tear的恶意软件编写者在GitHub公开发布了源代码,并声称这样做是出于研究目的,而那些很快复制改代码并做出自定义更改的攻击者导致大量随机变体出现。 臭名昭着的Locky勒索软件也在2016年被发现,Locky快速通过网络钓鱼活动以及利用Dridex基础设施传播。Locky也因为感染美国多个地区的医院而登上新闻头条。攻击者很快发现受感染医疗机构快速支付赎金,从而导致包含勒索软件下载的网络钓鱼电子邮件在医疗行业广泛传播。 SamSam SamSam或者SAMAS勒索软件被发现专门分发给易受攻击的JBoss服务器。起初,攻击者会通过JexBoss工具对JBoss服务器执行侦查,随后利用漏洞并安装SamSam。与其他勒索软件不同,SamSam包含一个通道,让攻击者可实时通过.onion网站与受害者通信。 KeRanger 第一个正式基于Mac OSX的勒索软件KeRanger在2016年被发现,它通过针对OSX的Transmission BitTorrent客户端来交付。该勒索软件使用MAC开发证书签名,让其可绕过苹果公司的GateKeeper安全软件。 Petya Petya在2016年开始流行,它通过Drop-Box来交付,并改写受感染机器的主启动记录(MBR),然后加密物理驱动器本身。它在加密驱动器时还是用假冒的CHKDISK提示。如果在7天内没有支付431美元赎金,支付费用将会翻一倍。Petya更新包含第二个有效载荷,这是Mischa勒索软件变体,而它没有加密硬盘驱动器。 Maktub Maktub也是在2016年被发现,它表明勒索软件开发人员在试图创建非常先进的变体。Maktub是第一个使用Crypter的勒索软件,这是用来隐藏或加密恶意软件源代码的软件。Maktub利用windows CryptoAPI执行离线加密,而不是使用C2来检索和存储加密密钥。 Jigsaw Jigsaw勒索软件在勒索信息中包含SAW电影系列中流行的Jigsaw人物,它还威胁称如果没有支付150美元的赎金将会每隔60分钟删除一个文件。此外,如果受害者试图阻止进程或重启电脑,将删除1000个文件。 CryptXXX 在2016年5月底,CryptXXX是被广泛分发的最新勒索软件辩题。研究人员认为它与Reveton勒索软件变体有关,因为在感染阶段有着类似的足迹。CryptXXX通过多种漏洞利用工具包传播,主要是Angler,并通常在bedep感染后被观察到。它的功能包含但不限于:反沙箱检测、鼠标活动监控能力、定制C2通信协议以及通过TOR付款。 ZCryptor 微软发表文章详细介绍了一种新型勒索软件变体ZCryptoer。除了调整的功能(例如加密文件、添加注册表项等),Zcryptoer还被认为是第一个Crypto蠕虫病毒。它通过垃圾邮件分发,它有自我繁殖技术来感染外部设备以及其他系统,同时加密每台机器和共享驱动器。 勒索软件的未来? 专家预测我们在2016年还将继续观测到多个新变种,在这些变种中,可能只有少数会带来很大影响—这取决于恶意软件编写者以及涉及的网络团伙。现在勒索软件编写者还在继续其开发工作,更新预先存在的勒索软件或者制造新的勒索软件,我们预测,增强灵活性和持久性将会成为勒索软件标准。 如果勒索软件具有这种能力,这将会是全球性的噩梦。根据最近使用crypter的勒索软件表明,勒索软件编写者知道很多研究人员试图逆向工程其软件,这种逆向工程和分析可能导致勒索软件开发人员改进其勒索软件变体。
㈨ 如何测试android存储加密
Android系统中,判断应用有无安装有两种方式: 1.根据包名判断,以下为判断代码: public boolean checkApkExist(Context context, String packageName) { if (packageName == null || “”.equals(packageName)) return false; try { ApplicationI
㈩ 如何添加BouncyCastle的算法到Android
首先我们准备环境和本次教程所需要的软件。我们自行安装配置myeclipse软件,本篇使用的是myeclipse2014,并下载本篇所使用的bouncy-castle.jar包。2然后我们打开myeclipse软件,在软件导航菜单处点击File,然后选择New,然后选择JavaProject。创建java普通项目,具体操作如下图所示。然后在创建项目窗口,我们输入本次的项目名称:MdBouncyCastleUtil,然后选择本篇所用的JRE环境,选择为JavaSE-1.7。完成后点击Finish即可创建完成。具体如下图所示。然后将下载好的jar包,复制到项目并加载到BuildPath。具体操作如下图所示。然后在项目上右击,选择New,然后选择Class进入创建实体类界面。具体操作如下图所示。在实体类创建界面,我们首先输入包名称为:com.md,然后输入类名称:MDUtil,然后勾选自动生成main函数,填写完毕后点击Finish即可完成创建。创建完成实体类后,我们进行代码的编写,首先我们需要编写将byte数组转化为16进制并输出的函数。本篇中函数名称为:convertbytesToHex。返回结果为16进制的字符串。具体实现如下图所示。然后编写MD2加密的实现,本篇中方法名称为:md2BouncyCastle,需要一个字符串类型的原文,返回为加密后的信息。加密过程中主要利用了:org.bouncycastle.crypto.digests.MD2Digest类的加密方法。具体代码如下图所示。然后编写MD4加密的实现,本篇中方法名称为:md4BouncyCastle,需要一个字符串类型的原文,返回为加密后的信息。加密过程中主要利用了:org.bouncycastle.crypto.digests.MD4Digest类的加密方法。具体代码如下图所示。然后编写MD5加密的实现,本篇中方法名称为:md5BouncyCastle,需要一个字符串类型的原文,返回为加密后的信息。加密过程中主要利用了:org.bouncycastle.crypto.digests.MD5Digest类的加密方法。具体代码如下图所示。然后在主体方法内编写测试方法,本篇中原文消息为:hellobouncycastlemd,然后调用我们实现的md系列的加密算法。具体实现如下图所示。最后我们运行代码,查看结果消息。可以看到原文消息经过加密后的信息结果。至此,我们已经实现了md系列的加密算法。