SHA256
23 12 25
Дорабатываю добавление блоков!
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package shine.db.entities;
|
||||
|
||||
import java.util.Base64;
|
||||
|
||||
/**
|
||||
* Локальная копия пользователя из Solana.
|
||||
*
|
||||
@@ -18,8 +20,7 @@ public class SolanaUserEntry {
|
||||
private String deviceKey; // TEXT
|
||||
private Integer bchLimit; // INTEGER nullable
|
||||
|
||||
public SolanaUserEntry() {
|
||||
}
|
||||
public SolanaUserEntry() {}
|
||||
|
||||
public SolanaUserEntry(String login,
|
||||
String bchName,
|
||||
@@ -49,4 +50,36 @@ public class SolanaUserEntry {
|
||||
|
||||
public Integer getBchLimit() { return bchLimit; }
|
||||
public void setBchLimit(Integer bchLimit) { this.bchLimit = bchLimit; }
|
||||
|
||||
/**
|
||||
* Публичный ключ логина в байтах (32 байта) или null, если ключ битый/пустой.
|
||||
*
|
||||
* Поддержка форматов:
|
||||
* - Base64 (предпочтительно)
|
||||
* - HEX (ровно 64 hex-символа, без пробелов)
|
||||
*/
|
||||
public byte[] getLoginKeyByte() {
|
||||
if (loginKey == null) return null;
|
||||
String s = loginKey.trim();
|
||||
if (s.isEmpty()) return null;
|
||||
|
||||
// 1) пробуем Base64
|
||||
try {
|
||||
byte[] b = Base64.getDecoder().decode(s);
|
||||
if (b != null && b.length == 32) return b;
|
||||
} catch (IllegalArgumentException ignore) {}
|
||||
|
||||
// 2) пробуем HEX (64 символа)
|
||||
if (s.length() == 64 && s.matches("^[0-9a-fA-F]+$")) {
|
||||
byte[] out = new byte[32];
|
||||
for (int i = 0; i < 32; i++) {
|
||||
int hi = Character.digit(s.charAt(i * 2), 16);
|
||||
int lo = Character.digit(s.charAt(i * 2 + 1), 16);
|
||||
out[i] = (byte) ((hi << 4) | lo);
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user