\\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系列的加密演算法。