web-dev-qa-db-fra.com

Comment générer une chaîne SecureRandom de longueur n en Java?

Je génère une chaîne aléatoire en utilisant:

private String generateSafeToken() {
    SecureRandom random = new SecureRandom();
    byte bytes[] = new byte[512];
    random.nextBytes(bytes);
    return bytes.toString();
}

Cela donne une chaîne de longueur 11 telle que [B@70ffc557. Comment puis-je faire en sorte que cette méthode ci-dessus renvoie une chaîne d'une longueur spécifiée. Par exemple 20 caractères?

15
kovac

Je ne comprends pas pourquoi cela est marqué en double alors que clairement la question "en double" référée ici ne répond pas à la question. Dans tous les cas, la réponse que je cherchais est ci-dessous, au cas où cela aiderait quelqu'un d'autre.

private String generateSafeToken() {
    SecureRandom random = new SecureRandom();
    byte bytes[] = new byte[20];
    random.nextBytes(bytes);
    Encoder encoder = Base64.getUrlEncoder().withoutPadding();
    String token = encoder.encodeToString(bytes);
    return token;
}
22
kovac

bytes.toString (); est incorrect, essayez d'utiliser Arrays.toString (octets) - ou une nouvelle chaîne (octets) si vous souhaitez la convertir en chaîne.

0
Dorian Gray