Android:加密密码[重复]

2024-01-09

可能的重复:
存储密码 https://stackoverflow.com/questions/5359399/storing-a-password

我正在使用共享首选项来存储密码。按原样保存密码数据是否安全,或者我必须在保存之前对其进行加密。请帮我提供示例代码。

提前致谢,


简短回答:是pretty secure.

长答案:首先,如果您正在创建一个允许用户登录 Web/远程服务的应用程序,您可能需要查看AccountManager http://developer.android.com/reference/android/accounts/AccountManager.html。学习 API 并与其集成有点困难,但您会获得一些不错的好处:

  1. 简单的多帐户管理(所有帐户都存储在AccountManager).
  2. 能够添加SyncAdapters(并且编写它们将非常简单,因为AccountManager将使用正确的帐户调用您的适配器 - 您不必手动为每个帐户运行同步)。
  3. 您的应用程序将出现在下面Settings > Accounts & sync.

查看示例同步适配器 http://developer.android.com/resources/samples/SampleSyncAdapter/index.html在文档中——它展示了如何使用AccountManager(如果不需要,可以忽略同步内容)。

现在,讨论存储密码的安全性(以下内容对于将密码存储在SharedPreferences and in AccountManager)。只要运行应用程序的设备没有获得 root 权限,它就是完全安全的。除您的应用程序外,没有其他应用程序可以读取密码。如果您使用 USB 线将手机连接到 PC 并使用,您甚至无法读取密码adb pull尝试获取相应的文件。

但是,如果手机已获得 root 权限,则任何获得 root 访问权限的应用程序都可以读取密码。还,adb pull有效,您可以在几秒钟内获得密码。

因此,建议加密(特别是如果您的网络/云/远程服务保存敏感数据)。我用过SimpleCrypto http://www.androidsnippets.com/encryptdecrypt-strings在我的上一个项目中(与AccountManager)而且效果很好。如果您想知道,我只是使用了一个常量作为“主密码”。为了增加安全性,我混淆了最终的构建(看看如何 http://developer.android.com/guide/developing/tools/proguard.html).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:加密密码[重复] 的相关文章

  • onBeaconServiceConnect 未调用

    和以前一样 我使用 Android Beacon 库 它已经工作了 我可以通过 BLE 低功耗蓝牙找到信标 但是现在 更新到最新版本的库后 现在方法onBeaconServiceConnect 不再跑了 请告诉我我需要做什么才能让它发挥作用
  • Android:使用 OAuth 访问 google 任务时出现问题

    由于 google 任务没有公共 api 我想编写解决方法并像浏览器一样请求数据 然后解析结果以进一步显示 为了访问数据 我使用 google 实现了 OAuth 身份验证来访问此 url https mail google com htt
  • 在android中通过BLE传输图像

    我使用以下代码传输 1 MB 的图像 如果在每个数据包之间实现线程延迟 则图像将成功传输 如果未设置线程延迟 则所有数据包均从BluetoothGattServer 发送 但BluetoothGattCallback 不会接收所有数据包 任
  • 通过 WhatsApp 发送消息

    由于我发现了一些较旧的帖子 表明 Whatsapp 不支持此功能 我想知道是否发生了变化 以及是否有办法打开与我通过意图发送的号码进行 Whatsapp 聊天 UPDATE请参阅https faq whatsapp com en andro
  • 自定义选择器活动:SecurityException UID n 无权 content:// uri

    我正在构建一个选择器应用程序来替换本机 Android 共享对话框 它工作正常 除非我尝试通过长按图像 gt 共享图像从 Chrome 共享图像 我发现 Google 没有捕获异常 它崩溃了 所以我可以通过 Logcat 查看它 在 Goo
  • Service 和 IntentService,运行从服务器轮询数据库值的服务哪个更好?

    我读过很多关于Service and IntentService 然而 当做出决定时 我没有足够的信心选择使用哪种类型来创建一个后台服务 该服务将在一定时间间隔内从数据库轮询数据 并在获得所需数据时停止它 因为数据代表请求的状态 例如 订购
  • 播放 SoundCloud 曲目

    我可以在 Android 应用程序中播放 SoundCloud 中的曲目吗 我正在尝试这段代码 但它不起作用 String res https api soundcloud com tracks 84973999 stream client
  • 带操作按钮的颤动本地通知

    我在我的 flutter 项目中尝试了 flutter 本地通知插件 它在简单通知上工作正常 但我需要带有操作按钮的通知功能 请帮助我或建议我实现此功能 不幸的是 flutter local notifications 插件尚不支持操作按钮
  • 调试:在 Android 1.0 中找不到文件

    今天我更新到 Android Studio v 1 0 在尝试编译任何项目时出现以下错误 app build intermediates classes debug 找不到文件 问题是在更新之前我没有任何问题 这是我实际尝试编译的代码 构建
  • 如何在React Native Android中获取响应头?

    您好 我想在获取 POST 请求后获取响应标头 我尝试调试看看里面有什么response with console log response 我可以从以下位置获取响应机构responseData但我不知道如何获取标题 我想同时获得标题和正文
  • Android 服务是否有办法检测设备何时锁定?

    我有一个 Android 服务 我希望在设备锁定时执行操作 我想澄清一下 我对屏幕开 关状态不感兴趣 我知道如何使用带有 Intent ACTION USER PRESENT 和 KeyguardManager inKeyguardRest
  • glTexImage2D: 之前出错:( 0x506 内部 0x1908 格式 0x1908 类型 0x1401

    当使用 Android Studio 运行模拟器时 我在模拟器屏幕上看不到任何内容 一切都是黑色的 我得到以下事件日志 模拟器 glTexImage2D 出错了 0x506 内部 0x1908 格式 0x1908 类型 0x1401 我已经
  • 放置在 NavigationDrawer 顶部的片段

    我正在尝试添加一个PreferenceFragment在我的应用程序中 问题是 它自动放置在我的顶部NavigationDrawer public class SetPreferenceActivity extends Activity O
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • 如何修改 Skobbler 注释而不重新添加它

    我必须修改 SKAnnotation 的图像 注释生成器代码 private SKAnnotation getAnnotationFromView int id int minZoomLvl View view SKAnnotation a
  • Android:RecyclerView 不显示片段中的列表项

    有人可以帮我尝试让我的 RecyclerView 出现吗 如果我不在片段中实现它 就会出现这种情况 然而 当我尝试将其实现到片段中时 CarFront 中的其他 XML 代码与 RecyclerView 分开显示 我的日志中收到此错误 E
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 获取其他指针的MotionEvent.getRawX/getRawY

    我可以获取其他指针的MotionEvent getRawX getRawY 值吗 MotionEvent getRawX API 参考 http developer android com reference android view Mo
  • 在Android Studio gradle项目中使用NDK和STL

    我在将 stlport 链接到 Android Studio 中的 gradle 项目时遇到问题 使用 NDK 的 Eclipse Android 项目迁移到 Android Studio 该项目使用 STL 我有包含内容的 android

随机推荐

  • JavaScript比较危机

    我遇到了以下问题 无法理解原因 有人可以解释一下吗 var foo 0 console log foo foo true console log foo foo true 第二个比较解释起来很简单 foo等于它本身 然而 第一个有点棘手 f
  • 在 CTRL+MOUSEWHEEL 事件上

    我被要求为我们的页面站点实现 ctrl mousewheel 事件 以便更改用户放大或缩小时的图像偏移 我找到了这个旧答案使用 javascript 覆盖浏览器 CTRL WHEEL SCROLL https stackoverflow c
  • 将带有哈希密码的用户表从旧的 php 应用程序迁移到新的 laravel 应用程序

    我正在开发一个旧的 php 应用程序 用户的密码是用md5 功能 所以密码的存储方式如下 c0c92dd7cc524a1eb55ffeb8311dd73f 我正在使用 Laravel 4 开发一个新应用程序 我需要有关如何迁移的建议user
  • 如何使用PHP7连接到sql服务器? (我错过了什么?)

    这是 phpinfo 输出 版本 php http cellcasehub com version php 这是代码 serverName X X X X connection array UID gt UserID PWD gt Pass
  • UnicodeDecodeError 'utf-8' 编解码器无法解码位置 2893 中的字节 0x92:无效的起始字节

    我正在尝试打开一系列 HTML 文件 以便使用 BeautifulSoup 从这些文件的正文中获取文本 我有大约 435 个文件想要运行 但我不断收到此错误 我尝试将 HTML 文件转换为文本并打开文本文件 但出现相同的错误 path Bi
  • Moq to Rhino - 假部分存储库

    我得到了这个非常酷的 Moq 方法 它伪造了我的 GetService 看起来像这样 private Mock
  • 在 jooq 的 UPDATE 中使用原始值表达式

    这是我试图执行的查询 UPDATE TABLE users SET metadata metadata keyA keyB WHERE
  • 如何在 R 中获取当前种子

    我正在 R 中运行一个带有随机因子的函数 我意识到我忘记运行set seed 在运行这个函数之前 有什么方法可以找回seedR 正在使用的值 我想它将是任意数字 但并不重要 以便我可以重现执行 您可以使用以下命令获取当前的随机状态 Rand
  • 如何将地址转换为纬度/经度?

    我如何将地址或城市转换为纬度 经度 我可以从哪些商业机构 租用 这项服务 这将用于具有全时互联网访问的 Windows PC 上的商业桌面应用程序 谷歌有一个地理编码 API 似乎对于他们拥有谷歌地图数据的大多数位置都运行良好 http g
  • 为什么内部 TABLE 部分必须经过 THEAD TFOOT TBODY 才能验证?

    我经常使用 THEAD TBODY 和 TFOOT 元素将数据表划分为可以使用 CSS 单独寻址的部分 我也明白总是有一个隐式的 TBODY 标签 让我困惑的是这些必须进入验证的顺序 该表将验证
  • Hadoop 映射器从 2 个不同的源输入文件读取

    我有一个链接很多映射器和缩减器的工具 在某些时候我需要合并之前映射缩减步骤的结果 例如作为输入 我有两个包含数据的文件 input a txt apple 10 orange 20 input b txt apple 5 orange 40
  • 如何使用javas Process.waitFor()?

    我正在尝试从 Java 运行命令行命令 快速的健全性检查让我意识到我遇到麻烦的原因是我无法获取pr waitFor 请拨打以下电话进行工作 该程序在不到 30 秒内结束 并且在 foo 之后不打印任何内容 我预计它会花费 30 多秒并在 f
  • 如何从模块导入类而不导入整个模块

    我有一个非常大的 python 模块 超过 1 GB 我使用以下命令在另一个 python 脚本中从该模块导入一个类from module import class 问题是 当我第一次启动 python 脚本时 内存消耗非常高 并且脚本执行
  • 具有多个手柄的 JQuery UI 滑块:如何阻止手柄交叉?

    我正在开发一个快速解决方案 它使用具有多个手柄的滑块来定义动态布局的宽度 我尝试使用 ExtJS3 和最新的 JQuery UI 在 ExtJS 中 您可以限制句柄 这样它们就不会相互交叉 这是一种实现我需要的 UI 的非常直观的方法 但是
  • 初始化集合时,哈希集对内存有何作用?

    我偶然发现了以下问题 我想要一个包含从 1 到 100 000 000 的所有数字的哈希集 我尝试了以下代码 var mySet new HashSet
  • ServiceStack OrmLite 命令超时

    使用 IDbConnection ExecuteSql 时如何设置命令超时 IDbConnection db ConnectionFactory OpenDbConnection db ExecuteSql 如果我使用 IDbCommand
  • 在撰写中禁用横向模式

    如何禁用可组合函数的横向模式 我想始终以纵向模式显示可组合项 PS 无法在活动的清单文件中设置它 因为我只希望此行为适用于一个可组合项 而不适用于活动中的其他可组合项 你可以这样做DisposableEffect 活动requestedOr
  • 线程:PyQt 因“出队时队列中存在未知请求”而崩溃

    我正在开发的应用程序的一部分需要向一小群人发送一些电子邮件 由于连接到 SMTP 服务器并发送电子邮件可能需要一些时间 因此我想在此操作期间使用后台线程来提供一个进度条来完成这项工作 现在发生的情况是 我可以实现一个工作得很好的测试结构 但
  • PHP 中如何判断 value 是否为日期

    我正在使用 PHP 中的值数组 其中一些值可能包括各种字符串格式的日期 我需要将多种格式的日期转换为它们的等效数字 Unix 时间戳 问题是能够确定字符串是否是日期 Using if timestamp strtotime str fals
  • Android:加密密码[重复]

    这个问题在这里已经有答案了 可能的重复 存储密码 https stackoverflow com questions 5359399 storing a password 我正在使用共享首选项来存储密码 按原样保存密码数据是否安全 或者我必