小编use*_*232的帖子

Kraken API:身份验证问题(无效密钥)

我正在尝试在Java中实现比特币交换Kraken的API.不幸的是,我一直试图执行身份验证以检索私有用户数据.

特别是,我正在玩以下实现: http ://pastebin.com/nHJDAbH8 Kraken API的文档在这里:https://www.kraken.com/help/api

但是,到目前为止我只收到了{"error":["EAPI:Invalid key"]}.我在实现中找不到任何错误,我尝试了几种不同的API密钥.有人可能会快速查看实现并查找代码中的缺陷吗?或者有人成功实施了Kraken API?

非常感谢!

身份验证说明如下:

HTTP-Header:API-Key = API密钥API-Sign =使用HMAC-SHA512(URI路径+ SHA256(nonce + POST数据))和base64解码的秘密API密钥的消息签名

发布数据:nonce =总是增加无符号64位整数otp =双因子密码(如果启用了双因子,否则不需要)注意:在我的情况下,otp被禁用,因此后期数据仅包含随机数.

我正在尝试的实现是:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

public class KrakenClient {

    protected static String key = "myAPIKey";     // API key
    protected static String secret = "MySecret====";  // API secret
    protected static String url = "api.kraken.com";     // …
Run Code Online (Sandbox Code Playgroud)

java authentication api

11
推荐指数
2
解决办法
4066
查看次数

为什么我需要两个密钥才能进行AES加密?

我正在尝试为某些文本实现AES加密,我正在寻找一种解决方案,最终归结为一个加密和解密密码.我在这个网站上找到了一个可行的解决方案:简单的Java AES加密/解密示例

import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

public class Encryptor {
    public static String encrypt(String key1, String key2, String value) {
        try {
            IvParameterSpec iv = new IvParameterSpec(key2.getBytes("UTF-8"));

            SecretKeySpec skeySpec = new SecretKeySpec(key1.getBytes("UTF-8"),
                    "AES");
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
            cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
            byte[] encrypted = cipher.doFinal(value.getBytes());
            System.out.println("encrypted string:"
                    + Base64.encodeBase64String(encrypted));
            return Base64.encodeBase64String(encrypted);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return null;
    }

    public static String decrypt(String key1, String key2, String encrypted) {
        try {
            IvParameterSpec iv = …
Run Code Online (Sandbox Code Playgroud)

java encryption aes

2
推荐指数
1
解决办法
2367
查看次数

Pusher:减少连接状态的超时

我目前正在使用 Java 的 Pusher 库尝试 websockets。

如果互联网连接丢失,Pusher 会自动将其连接状态从“已连接”更改为“已断开”。然而,这似乎只有在断开连接 150 秒后才会发生。这是非常不幸的,因为在这 150 年间,很多消息可能会丢失,而事实上的旧消息仍然可以被视为最新的。

我如何知道最后收到的消息是否是最新的?或者有什么办法可以减少连接状态的超时时间?

这是我正在使用的推送器代码:

import com.pusher.client.Pusher;
import com.pusher.client.channel.Channel;
import com.pusher.client.channel.ChannelEventListener;
import com.pusher.client.channel.SubscriptionEventListener;
import com.pusher.client.connection.ConnectionEventListener;
import com.pusher.client.connection.ConnectionState;
import com.pusher.client.connection.ConnectionStateChange;


public class Testing {

    public static void main(String[] args) throws Exception {


        // Create a new Pusher instance
        Pusher pusher = new Pusher("PusherKey");

        pusher.connect(new ConnectionEventListener() {

            @Override
            public void onConnectionStateChange(ConnectionStateChange change) {
                System.out.println("State changed to " + change.getCurrentState() +
                                   " from " + change.getPreviousState());
            }

            @Override
            public void onError(String message, String code, …
Run Code Online (Sandbox Code Playgroud)

java timeout websocket pusher

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

标签 统计

java ×3

aes ×1

api ×1

authentication ×1

encryption ×1

pusher ×1

timeout ×1

websocket ×1