BruceWind / AESJniEncrypt

🛡 Make safest code in Android. (基于libsodium实现chacha20算法,key在native中,防止被二次打包){长期维护,请star,勿fork}
Other
1k stars 164 forks source link

Key是怎么处理的? #4

Closed NiLuogege closed 7 years ago

NiLuogege commented 7 years ago

想问一下 大神 的原始key 1234567890abcdef 是如何处理成 NMTIzNDU2Nzg5MGFiY2RlZg . 如果我将现在项目中的 NMTIzNDU2Nzg5MGFiY2RlZg 改为其他的字符串 会报错,比如说直接改为1234567890abcdef

JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0x9f 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] string: '�]W�' 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] in call to NewStringUTF 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] from java.lang.String com.androidyuan.aesjni.AESEncrypt.decode(java.lang.Object, java.lang.String) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] "main" prio=5 tid=1 Runnable 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] | group="main" sCount=0 dsCount=0 obj=0x739a6df0 self=0xb76f56d0 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] | sysTid=28647 nice=-1 cgrp=top_visible sched=0/0 handle=0xb6f62b38 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] | state=R schedstat=( 725591984 30464304 253 ) utm=42 stm=30 core=4 HZ=100 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] | stack=0xbe21e000-0xbe220000 stackSize=8MB 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] | held mutexes= "mutator lock"(shared held) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] native: #00 pc 00371069 /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3113basic_ostreamIcNS0_11char_traitsIcEEEEiPKcPNS_9ArtMethodEPv+160) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] native: #01 pc 003508c3 /system/lib/libart.so (_ZNK3art6Thread4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+150) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] native: #02 pc 0025a8ed /system/lib/libart.so (ZN3art9JavaVMExt8JniAbortEPKcS2+740) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] native: #03 pc 0025afc5 /system/lib/libart.so (_ZN3art9JavaVMExt9JniAbortVEPKcS2_St9va_list+64) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] native: #04 pc 000fda29 /system/lib/libart.so (_ZN3art11ScopedCheck6AbortFEPKcz+32) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] native: #05 pc 00103713 /system/lib/libart.so (_ZN3art11ScopedCheck5CheckERNS_18ScopedObjectAccessEbPKcPNS_12JniValueTypeE.constprop.95+8102) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] native: #06 pc 0010a67b /system/lib/libart.so (_ZN3art8CheckJNI12NewStringUTFEP7_JNIEnvPKc+386) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] native: #07 pc 000eb189 /system/lib/libart.so (art_quick_generic_jni_trampoline+40) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] native: #08 pc 000e6a91 /system/lib/libart.so (art_quick_invoke_stub_internal+64) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] native: #09 pc 00403623 /system/lib/libart.so (art_quick_invoke_static_stub+170) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] native: #10 pc 007fd864 [stack] (???) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] at com.androidyuan.aesjni.AESEncrypt.decode(Native method) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] at com.androidyuan.aesjniencrypt.MainActivity.onCreate(MainActivity.java:24) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] at android.app.Activity.performCreate(Activity.java:6367) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2397) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2504) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] at android.app.ActivityThread.access$900(ActivityThread.java:165) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1368) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] at android.os.Handler.dispatchMessage(Handler.java:102) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] at android.os.Looper.loop(Looper.java:150) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] at android.app.ActivityThread.main(ActivityThread.java:5546) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] at java.lang.reflect.Method.invoke!(Native method) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684) 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/java_vm_ext.cc:410] 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/runtime.cc:368] Runtime aborting... 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/art: art/runtime/runtime.cc:368] 09-24 15:47:25.941 28647-28647/com.androidyuan.aesjniencrypt A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 28647 (n.aesjniencrypt)

所以想问问 我们自己项目中的key 要如何处理

BruceWind commented 7 years ago

代码里是NMTIzNDU2Nzg5MGFiY2RlZg对吧?

base64(1234567890abcdef) = MTIzNDU2Nzg5MGFiY2RlZg

N + MTIzNDU2Nzg5MGFiY2RlZg = NMTIzNDU2Nzg5MGFiY2RlZg

BruceWind commented 7 years ago

你看我代码里有还原真实key的操作: NMTIzNDU2Nzg5MGFiY2RlZg --> 1234567890abcdef

BruceWind commented 6 years ago

新版key的安全存储方案,初阶版本。commit:fbf46a49183e84d160ae99a7e0127d206696847b