我直接在我的
Android Kotlin 应用程序中使用openAI
来实现聊天功能,而不是使用存储 ApiKey
并与 openAI
通信的自定义服务器,然后以 endpoint
或API
。
我使用
JNI
将密钥存储在 .c
文件中并将其返回到我的 Kotlin 代码。这安全吗?或者存储 API 密钥的更好方法是什么。
src/main/java/vvv.altug.dreamgpt/NativeLibWrapper
package vvv.altug.dreamgpt
class NativeLibWrapper {
companion object {
init {
System.loadLibrary("native-lib")
}
@JvmStatic
external fun getApiKey(): String
}
}
应用程序/jni/native-lib.c
#include <jni.h>
#include <string.h>
JNIEXPORT jstring JNICALL
Java_vvv_altug_dreamgpt_NativeLibWrapper_getApiKey(JNIEnv *env, jobject obj) {
return (*env)->NewStringUTF(env,
"sk-XXXXXXXXXkeyXXXXXXXXX");
}
视图模型:
val apiKey = NativeLibWrapper.getApiKey()
不要这样做。无论获取 API 密钥的过程多么复杂和复杂,在某些时候它都会保留在内存中。任何人都可以在调试模式下重建您的 APK,只需在程序中的正确位置放置一个断点即可。
至少,用 AWS lambda 或类似的语言编写一个愚蠢的简单请求转发器,并让您的应用程序与 that 对话。这样,您就可以设置警报,以提醒人们何时(而不是是否)发现您的端点或多或少是一个免费使用的 OpenAI 端点。