相关疑难解决方法(0)

如何在Java中将字节数组转换为十六进制字符串?

我有一个字节数组填充十六进制数字和打印它简单的方法是非常没有意义的,因为有许多不可打印的元素.我需要的是以下形式的确切十六进制代码:3a5f771c

java hex bytearray

606
推荐指数
16
解决办法
67万
查看次数

使用JAX-RS和Jersey进行基于REST令牌的身份验证的最佳实践

我正在寻找一种在Jersey中启用基于令牌的身份验证的方法.我试图不使用任何特定的框架.那可能吗?

我的计划是:用户注册我的Web服务,我的Web服务生成令牌,将其发送到客户端,客户端将保留它.然后,对于每个请求,客户端将发送令牌而不是用户名和密码.

我在考虑为每个请求使用自定义过滤器,@PreAuthorize("hasRole('ROLE')") 但我只是认为这会导致很多请求数据库检查令牌是否有效.

或者不创建过滤器并在每个请求中放置一个参数令牌?这样每个API首先检查令牌,然后执行一些东西来检索资源.

java authentication rest jax-rs jersey-2.0

437
推荐指数
2
解决办法
32万
查看次数

Java中的Base64编码

我正在使用Eclipse.我有以下代码行:

wr.write(new sun.misc.BASE64Encoder().encode(buf));
Run Code Online (Sandbox Code Playgroud)

Eclipse将此行标记为错误.我导入了所需的库:

import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;
Run Code Online (Sandbox Code Playgroud)

但同样,它们都显示为错误.我在这里找到了类似的帖子.

我使用Apache Commons作为建议的解决方案,包括:

import org.apache.commons.*;
Run Code Online (Sandbox Code Playgroud)

并导入从以下网址下载的JAR文件:http://commons.apache.org/codec/

但问题仍然存在.Eclipse仍然显示前面提到的错误; 请指教.

java base64

302
推荐指数
14
解决办法
74万
查看次数

Java HashMap的keySet()迭代顺序是否一致?

我知道从M​​ap的keySet()方法返回的Set不保证任何特定的顺序.

我的问题是,它是否保证多次迭代的相同顺序.例如

Map<K,V> map = getMap();

for( K k : map.keySet() )
{
}

...

for( K k : map.keySet() )
{
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,假设映射修改,将迭代在按键组处于相同的顺序.使用Sun的jdk15它以相同的顺序迭代,但在我依赖于这种行为之前,我想知道所有JDK是否都会这样做.

编辑

我从答案中看到我不能依赖它.太糟糕了.我希望不必为了保证我的订购而建立一些新的收藏品.我的代码需要迭代,执行一些逻辑,然后使用相同的顺序再次迭代.我将从keySet创建一个新的ArrayList,这将保证顺序.

java iteration hashmap hashset

71
推荐指数
5
解决办法
6万
查看次数

如何在Java中生成随机字符串

我有一个名为对象Student,它有studentName,studentId,studentAddress,等有关studentId,我必须生成随机字符串包括七个数字charaters,例如.

studentId = getRandomId();
studentId = "1234567" <-- from the random generator.
Run Code Online (Sandbox Code Playgroud)

我必须确保没有重复的ID.

java string random char

70
推荐指数
4
解决办法
23万
查看次数

在Java中使用AZ和0-9创建随机字符串

正如标题所示,我需要创建一个随机的,长度为17个字符的ID.像" AJB53JHS232ERO0H1" 这样的东西.字母和数字的顺序也是随机的.我想创建一个带有字母AZ和'check'变量的数组1-2.在循环中;

Randomize 'check' to 1-2.
If (check == 1) then the character is a letter.
Pick a random index from the letters array.
else
Pick a random number.
Run Code Online (Sandbox Code Playgroud)

但我觉得有一种更简单的方法可以做到这一点.在那儿?

java random

54
推荐指数
4
解决办法
17万
查看次数

如何在Java中为Salted-Hash生成SALT?

我一直在寻找,最接近的答案是:如何生成一个随机的字母数字字符串?

我想根据这个CrackStation教程来遵循这个工作流程:

存储密码

  1. 使用CSPRNG生成长的随机盐.

  2. 将salt添加到密码中,并使用标准加密哈希函数(如SHA256)对其进行哈希处理.

  3. 将salt和hash都保存在用户的数据库记录中.

验证密码

  1. 从数据库中检索用户的salt和hash.

  2. 将salt添加到给定密码并使用相同的哈希函数对其进行哈希处理.

  3. 将给定密码的哈希值与数据库中的哈希值进行比较.如果匹配,则密码正确.否则,密码不正确.

我不知道如何生成SALT.我想出了如何使用MessageDigest生成哈希.我尝试使用SecureRandom,但nextByte方法产生乱码.

编辑:我不知道选择哪个答案,对我来说太复杂了,我决定使用jBCrypt; jBCript很容易使用,在幕后做所有复杂的事情.所以我会让社区投票给出最佳答案.

java security encryption hash salt

41
推荐指数
2
解决办法
8万
查看次数

如何生成20个字符的随机字符串

可能重复:
如何在Java中生成随机字符串

我想生成一个20个字符的随机字符串,而不使用apache类.我真的不在乎是否是字母数字.另外,我将在以后的FYI中将其转换为字节数组.

谢谢,

java

38
推荐指数
3
解决办法
14万
查看次数

UUID.randomUUID()是否适合用作一次性密码?

正如前面所讨论的,确认电子邮件应该有一个独特的,(几乎)未猜测的代码-基本上是一个一次性密码 --in确认链接.

UUID.randomUUID()文档说:

使用加密强伪随机数生成器生成UUID.

这是否意味着正确实现的JVM中的UUID随机生成器适合用作唯一的(实际上)不可猜测的OTP?

java security random uuid

24
推荐指数
3
解决办法
2万
查看次数

如何使用Java创建身份验证令牌

在我的Java EE6,REST服务上,我想使用身份验证令牌从移动设备登录,用户将发送他们的用户名,密码和服务器将发回一个令牌,这将用于授权用户他们对给定的进一步请求时间.

我可以像这样简单地创建一个令牌吗?(我想我不需要加密它,因为我将使用HTTPS.)

String token = UUID.randomUUID().toString().toUpperCase() 
            + "|" + "userid" + "|"
            + cal.getTimeInMillis();
Run Code Online (Sandbox Code Playgroud)

或者有一种更标准的方式来创建我的令牌?也许它存在于API之一中

java security authentication rest token

24
推荐指数
3
解决办法
7万
查看次数