Android sha512 示例

2023-12-12

  1. 有人可以提供一个关于如何使用 java/android 哈希密码的示例吗PW_HASH_ITERATION_COUNTsha512 + salt 的迭代?

    在伪代码中:

    hash = sha512(concat(pw,salt));
    for (i = 1; i<PW_HASH_ITERATION_COUNT; i++){
        hash = sha512(concat(hash,concat(pw,salt)));
    }
    

    Where z = concat(x,y)是 x 和 y 的串联。

    也许使用信息摘要 ?

  2. 你会建议什么PW_HASH_ITERATION_COUNT?最多需要多少次迭代才能在某些较旧的设备(2.1+)上运行

更新更新更新

由于充分的理由,我们将使用bcrypt加密我们的密码。我们使用jBCrypt执行。

无论如何..回答这个问题...这是上面问题的代码,将 SHA-512 与 MessageDigest 结合使用:

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import de.seduceme.utils.Base64;

public class PwStorage {
    public static int PW_HASH_ITERATION_COUNT = 5000;
    private static MessageDigest md;

    public static void main(String[] args) {
        String pw = "teüöäßÖst1";
        String salt = "e33ptcbnto8wo8c4o48kwws0g8ksck0";

        try {
            md = MessageDigest.getInstance("SHA-512");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            throw new RuntimeException("No Such Algorithm");
        }

        String result = PwStorage.hashPw(pw, salt);
        System.out.println(result);
        // result: 2SzT+ikuO9FBq7KJWulZy2uZYujLjFkSpcOwlfBhi6VvajJMr6gxuRo5WvilrMlcM/44u2q8Y1smUlidZQrLCQ==
    }


    private static String hashPw(String pw, String salt) {
        byte[] bSalt;
        byte[] bPw;

        try {
            bSalt = salt.getBytes("UTF-8");
            bPw = pw.getBytes("UTF-8");
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException("Unsupported Encoding", e);
        }

        byte[] digest = run(bPw, bSalt);
        for (int i = 0; i < PW_HASH_ITERATION_COUNT - 1; i++) {
            digest = run(digest, bSalt);
        }

        return Base64.encodeBytes(digest);
    }

    private static byte[] run(byte[] input, byte[] salt) {
        md.update(input);
        return md.digest(salt);
    }
}

With 这个 Base64 库.


Read my post在这里,特别是我链接到的关于密码散列.

  • 理想情况下,您应该使用 bcrypt 或 scrypt,而不是自己进行密码散列。
  • 但如果必须的话,您应该至少运行几千次迭代,最好更多。

是的,您可以使用MessageDigest对于 SHA-512。每次你打电话digest,对象的状态会自动重置,这非常方便——您可以立即开始更新下一次迭代。

但我仍然认为你应该使用 bcrypt 或 scrypt 代替。为了您自己的利益,也为了您的用户的利益。 :-)

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

Android sha512 示例 的相关文章

  • 有多少种方法可以将位图转换为字符串,反之亦然?

    在我的应用程序中 我想以字符串的形式将位图图像发送到服务器 我想知道有多少种方法可以将位图转换为字符串 现在我使用 Base64 格式进行编码和解码 它需要更多的内存 是否有其他可能性以不同的方式做同样的事情 从而消耗更少的内存 现在我正在
  • Jetpack 导航:如何从一个嵌套图的子级导航到另一个嵌套图的子级?

    导航结构 MainActivity nav root HomeFragment AuthNestedGraph nav auth BeforeOtpFragment home OtpFragment ProfileNestedGraph n
  • TextInputLayout 对于在 EditText 中以编程方式给出提示没有效果

    我有一个 EditText 它的父级是 TextInputLayout 我试图以编程方式为 EditText 提供提示 不在布局中 在这种情况下 文本输入提示动画不起作用 它像简单的 EditText 一样工作 有人可以建议如何处理它吗 下
  • Jenkins 的代码覆盖率 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我想在java中使用XQuery进行Xml处理

    我想用XQuery用于从 java 中的 Xml 获取数据 但我没有得到需要为此添加哪个 Jar 我在谷歌上搜索了很多 但没有得到任何有用的例子 例如我得到以下链接 https docs oracle com database 121 AD
  • 在 Java 中将弯音发送到 MIDI 音序器

    我了解启动和运行 MIDI 音序器的基础知识 并且希望能够在播放过程中增加 减小序列的音高 但弯音是发送到合成器而不是音序器的消息 我尝试将音序器的接收器设置为合成器的发射器 当我发送弯音短消息时 音序器保持相同的音调 但随后合成器以新的弯
  • 是否可以使用 CardView 为浮动操作按钮制作阴影?

    I know CardView不是为此而设计的 但理论上如果cardCornerRadius view size 2它应该导致圆圈 我错过了什么吗 绘制真实的动画阴影并不困难 您可以尝试在 Froyo 等任何 Android 设备上实现 L
  • 创建正则表达式匹配数组

    在Java中 我试图将所有正则表达式匹配返回到一个数组 但似乎您只能检查模式是否匹配某些内容 布尔值 如何使用正则表达式匹配来形成与给定字符串中的正则表达式匹配的所有字符串的数组 4城堡的回答 https stackoverflow com
  • 了解 Spark 中的 DAG

    问题是我有以下 DAG 我认为当需要洗牌时 火花将工作划分为不同的阶段 考虑阶段 0 和阶段 1 有些操作不需要洗牌 那么为什么 Spark 将它们分成不同的阶段呢 我认为跨分区的实际数据移动应该发生在第 2 阶段 因为这里我们需要cogr
  • 在android中创建SQLite数据库

    我想在我的应用程序中创建一个 SQLite 数据库 其中包含三个表 我将向表中添加数据并稍后使用它们 但我喜欢保留数据库 就好像第一次安装应用程序时它会检查数据库是否存在 如果存在则更新它 否则如果不存在则创建一个新数据库 此外 我正在制作
  • 如何在Android中创建一个简洁的两栏输入表单?

    我想创建一个整洁的两列输入表单 如下所示 到目前为止我的 xml 布局代码
  • 如何初始化静态地图?

    你会如何初始化静态Map在Java中 方法一 静态初始化方法二 实例初始化 匿名子类 或者 还有其他方法吗 各自的优点和缺点是什么 这是说明这两种方法的示例 import java util HashMap import java util
  • Android AdMob:addView 在返回活动之前不会显示广告

    我正在尝试在游戏顶部添加横幅广告 我的活动使用带有自定义 SurfaceView 的relativelayout 我希望广告与 SurfaceView 重叠 广告会加载并可点击 但不会绘制到屏幕上 当我离开活动并返回时 会绘制广告 例如 通
  • 警告:无法更改每个人的权限:

    当运行 Java 快速入门示例时https developers google com drive web quickstart java hl hu https developers google com drive web quicks
  • Flash 对象未显示在phonegap android 中

    我已经在 android 手机间隙创建了一个应用程序 我有一个屏幕 我想显示一个静态 flash obj 所以我在屏幕 HTML 页面中放入了以下代码
  • 失败时石英重试

    假设我有一个这样配置的触发器
  • 防止Java实例化的正确方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在不同版本的Google App Engine中使用自定义域名?

    我使用谷歌应用程序引擎作为我的 Android 和 Web 应用程序的服务器 我使用 Android Studio 开发了 Android 应用程序 并使用 Eclipse 开发了 Web 应用程序 我在应用程序引擎中部署了两个版本 第一个
  • 我应该如何在 Android 上使用 Retrofit 处理“无互联网连接”

    我想处理没有互联网连接的情况 通常我会运行 ConnectivityManager cm ConnectivityManager context getSystemService Context CONNECTIVITY SERVICE N
  • Java、Spring、Hibernate找不到org.springframework.orm.hibernate3.LocalSessionFactoryBean

    我正在尝试制作 spring hibernate ant 项目 目前我收到此错误 HTTP Status 500 type Exception report message description The server encountere

随机推荐

  • Flex:是否可以停止远程调用?

    我搜索了很长时间 但仍然没有找到答案 在常见情况下 我们保留远程方法调用的令牌 例如 Flex gt Java 但是 如果客户端知道不再需要当前调用 如何停止服务器处理 使用asyncToken 是否可以停止远程调用 感谢您的回答 据我了解
  • 如何使用 Devise 将 Rails 应用程序转变为 SSO/CAS 服务器?

    我从一个上一个问题我一直在问错误的问题 我想将我的应用程序变成 CAS 服务器 以便应用程序的管理员可以使用相同的身份验证机制来登录我们为组织开发的其他应用程序 你以前做过这个吗 是否有一个插件可以增加 Devise 充当 CAS 服务器的
  • relativeLayout.RIGHT_OF 不起作用

    我正在尝试在现有的相对布局中以编程方式创建一个文本视图和一个按钮 这个想法是将textview放在parentView relativeLayout 的左上角 然后将按钮添加到textView的右侧 但在应用程序中 它们看起来像是在同一个地
  • 对象字段序列

    我有一个用 JavaScript 代码编写的 JavaScript 对象 如下所示 var rtnStr 000 area000 020 area020 030 area030 040 area040 047 area047 049 are
  • Google Apps 脚本 - 获取 doPost 的 IP 并在电子表格中进行跟踪

    有没有一种简单的方法来捕获d的IPoPost e 请求并将其与 POST 的传入值一起存储以跟踪请求的来源 它似乎无法通过e parameter 我找不到其他属性或方法的完整列表e 目前无法获取传入请求的 IP 地址或用户代理doGet o
  • 如何使用 Selenium 和 Xpath 通过忽略大小写的文本查找元素

    我使用的是java版本 1 8 0 191 和selenium 3 141 59 我试图找出页面是否包含 error 或 erreur 一词 另外 我希望它不区分大小写 查找文本很容易 List
  • Try-catch 可以加速我的代码吗?

    我编写了一些代码来测试 try catch 的影响 但看到了一些令人惊讶的结果 static void Main string args Thread CurrentThread Priority ThreadPriority Highes
  • UISearchBar:更改外观 - 形状、背景、覆盖图像

    我想更改默认 UISearchBar 的外观 例如 您将如何在 Google iPhone 应用程序中重新创建搜索框 如下所示 如何叠加图像来产生这种效果 source isedb com 经过对自定义搜索栏可能性的一些调查 我倾向于说这是
  • jQuery UI 弹跳效果对齐 Firefox 和 IE8 中左侧的元素

    在 Firefox 和 IE8 或更低版本中 JQuery UI 的反弹效果存在问题 IE9 Chrome Safari都能正常渲染反弹效果 任何想法是什么导致了这个 该问题在 Firefox 和 Chrome 中都有体现 弹出窗口询问您是
  • Matlab 中的无效对象句柄错误

    我有以下代码 它是卫星绕地球运动的图形渲染 function ex global state fh figure Menu none Toolbar none Units characters hPanAni uipanel parent
  • Flutter:任务“:app:packageDebug”执行失败

    您好 我在使用 flutter 编译时遇到问题 我已经尝试使用 flutter run 进行调试 debug 但没有成功 我认为来自 gradle 但我不知道如何解决这个问题 Resolving dependencies 3 5s FAIL
  • JavaScript 倒计时

    我已经在网上搜索过 但所有可用的都是您指定日期的地方 并且它会倒计时到该日期 我需要的是从 27分43秒 以这种格式 一直倒数到0的东西 无论何时他们登陆页面 有人得到任何可用的片段吗 像这样的事情应该可以解决问题 我很无聊 决定自己做而不
  • 我可以在 CDH 中安装多个 Spark 版本吗?

    我使用的是cdh5 1 0 它已经安装了默认的spark 但是 我想使用 Spark 1 3 我也可以将此版本安装到cdh5 1 0吗 如何才能设置这些呢 新版本的spark也会通过Cloudera manager监控吗 是的 您可以运行您
  • 检测应用程序的首次运行

    我正在创建一个应用程序 当应用程序第一次启动时 我必须在其中创建一个 plist 稍后我将使用 plist 来存储用户稍后输入的详细信息 如何检测应用程序的首次启动 我正在尝试 NSUserDefaults 但我认为我做错了什么 您可以使用
  • 如何在 Android 上的 MapView 中添加地图比例尺?

    我正在努力添加一个地图比例 根据当前的缩放级别在屏幕上显示当前的长度 我有一种感觉 它可能存在一些预定义的类可供使用 但我不知道 我已经搜索了很多但找不到任何东西 我非常感谢任何帮助 Alex 好吧 我现在明白了 Luis 的回答对我帮助很
  • 如何将值传递给构造函数?

    很抱歉我的问题有点理论化 我是 OOP 新手 正在研究以下代码 public interface IShape double getArea public class Rectangle IShape int lenght int widt
  • 如何从已经有 main 的 gradle 项目中运行 Kotlin 脚本?

    我有 Ktor 项目 其主要名称为Application kt 布局是这样的 com myProject Application kt Testing kt api Routes kt routes NewRoutes kt OpenApi
  • Boost ASIO HTTP 客户端 POST

    我正在尝试让 boost ASIO 库发送帖子 但变量从未发送到服务器 我知道服务器工作正常 用curl测试 此代码不起作用 变量 msg 未发布到服务器 但当我使用curl 时它确实起作用 tcp resolver resolver io
  • 在外部区域达到阈值后允许 BottomSheet 向上滑动

    我正在尝试复制当前 Google 地图的行为 该行为允许从底部栏向上滑动时显示底部工作表 请注意 在下面的录音中 我首先点击底部栏上的一个按钮 然后向上滑动 这又会显示其后面的工作表 我找不到任何地方解释如何实现这样的事情 我尝试探索 Bo
  • Android sha512 示例

    有人可以提供一个关于如何使用 java android 哈希密码的示例吗PW HASH ITERATION COUNTsha512 salt 的迭代 在伪代码中 hash sha512 concat pw salt for i 1 i