小编Dad*_*oid的帖子

如何在Android KeyStore中生成KeyPair,受自定义密码保护

我有app使用指纹和4位数针(可以由用户在应用程序设置中设置,这不是系统管脚/模式/密码)授权.

使用指纹一切都很好,我的针有问题.

我想要做的是:

  1. 让用户从应用程序设置中设置引脚
  2. 在密钥库中为输入引脚保护的某些别名生成密钥对(以便在没有此引脚的情况下无法访问私钥)
  3. 将公钥发送到服务器以供将来签名验证
  4. 从服务器获取用户令牌并将其存储在本地存储中

然后在授权期间:

  1. 请求用户输入引脚
  2. 通过输入的引脚检索私钥
  3. 从本地存储中检索令牌
  4. 使用步骤6中的私钥对令牌进行签名
  5. 使用签名数据将其发送到服务器
  6. 验证服务器上的签名,如果有效,则打开用户的会话.

我的问题是:如何生成由用户输入的pin保护的KeyPair

PS对于指纹,此逻辑由以下方式处理:

KeyGenParameterSpec.Builder(KEY_NAME, KeyProperties.PURPOSE_SIGN).setUserAuthenticationRequired(true)
Run Code Online (Sandbox Code Playgroud)

android keystore key-pair android-fingerprint-api

6
推荐指数
1
解决办法
1448
查看次数

对WCF服务的多个并行调用比单个调用花费的时间更长

我正在测试WCF并发性和实例化。

有wcf服务:

public class Service1 : IService1
{
    public string GetData(int value)
    {
        Thread.Sleep(1000);
        return string.Format("You entered: {0}", value);
    }

}
Run Code Online (Sandbox Code Playgroud)

在我的表单应用程序中,我调用了此服务方法。当我进行一次通话时,大约需要1秒钟。

    private void single_Click(object sender, EventArgs e)
    {
        using (var service = new Service1Client())
        {
            var sw = new Stopwatch();
            sw.Start();
            service.GetData(1);
            sw.Stop();
            Debug.WriteLine(sw.Elapsed);
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,当我使用Tasks多次调用它时,它需要一个近似值:调用计数* 1秒。

    private void mult_Click(object sender, EventArgs e)
    {
        using (var service = new Service1Client())
        {
           var tasks = new List<Task<string>>();
           for (var i = 0; i < 5; i++)
           {

              int p …
Run Code Online (Sandbox Code Playgroud)

c# wcf task-parallel-library

5
推荐指数
1
解决办法
3114
查看次数