【问题标题】:How to generate a nonce and print it on client side in Android? [closed]如何生成随机数并将其打印在 Android 的客户端? [关闭]
【发布时间】:2011-01-25 17:36:21
【问题描述】:

我现在正在开发一个与 IMS 相关的 Android 程序。 我希望服务器将 nonce 作为字符串发送回客户端并在客户端打印。

我的部分代码,来自Generating a Secure Random Number

public static String generateNonce() { 
  try {
   // Create a secure random number generator
   SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");

   // Get 1024 random bits
   byte[] bytes = new byte[1024/8];
   sr.nextBytes(bytes);

   // Create two secure number generators with the same seed
   int seedByteCount = 10;
   byte[] seed = sr.generateSeed(seedByteCount);

   sr = SecureRandom.getInstance("SHA1PRNG");
   sr.setSeed(seed);
   SecureRandom sr2 = SecureRandom.getInstance("SHA1PRNG");
   sr2.setSeed(seed);
   } catch (NoSuchAlgorithmException e) {
  }
  //return NONCE;
  return null;
 }

我在一开始就声明了NONCE = generateNonce();。 但问题是它没有得到一个 nonce 值,而是在客户端打印 null。当我尝试在服务器端打印它时,它也显示为 null

有人可以告诉我代码中的错误或帮助我更好或更合适的编码吗?

【问题讨论】:

    标签: java android client-server


    【解决方案1】:

    您需要将return 语句添加到您想要返回的值中,到目前为止,您的代码生成(或似乎生成)NONCE 但您返回null 所以字符串NONCE 的值是null

    您还应该删除return null 语句。如果你把它留在里面并且它是 last return 语句,你的代码将生成一个有效的 NONCE 将返回 null

    【讨论】:

      【解决方案2】:

      好吧,我先整理一下你的代码格式,因为它很难读。

      然后我会删除第二个 SecureRandom 实例。

      然后我会删除最后的return null; 语句。

      然后我会重写函数以返回一个随机整数,如下所示:

       return sr.next(32);
      

      还要确保函数被声明为返回整数而不是字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-17
        • 1970-01-01
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多