以太坊私钥被别人知道
『壹』 买入比特币后,卖家也知道私钥怎么办
如果你是直接买比特币的话,是别人给你的比特币地址转入一定数量的币
地址是你的,私钥也是你的,
你是在别人给你转的时候 把私钥也告诉对方了 吗?
如果别人知道你的私钥是有可能把你钱包里的比特币转走的
你可以把比特币转给别人,生成新的地址,别人再把币转回来给你
这样就产生新的私钥地址了,但这样转来转去是收手续费的
『贰』 发现别人的RSA私钥和自己的公钥相同,要不要改
当然不用更换了!A的私钥只有他自己知道,B的公钥是公开的,所以只有A知道他的私钥跟B的公钥是相同的,这有什么关系,他又不会告诉别人自己的私钥是跟B的公钥一样!当然A的公钥也是公开的。
『叁』 有一个以太坊地址,在哪里找它的私钥
他的私钥在开发者或者拥有者那里吧。合约数字商品交易平台。
『肆』 以太妨钱包映射中私钥丢失怎么找回
丢失的话最好是在贴丢失广告
『伍』 区块链不能随便告诉给别人是:BTC私钥还是BTC地址还是钱包安全密码
这是重要性排序:BTC私钥、钱包安全密码、BTC地址
私钥是一切,一定不能告诉任何人。
只要有私钥就可以重新导入钱包,重新设置钱包安全密码。
一个BTC账户可以有很多地址,所以里面最不重要的就是地址。不管多不重要,都不能随便告诉别人。
『陆』 ETH发错了钱包地址可以找回吗
可以。
ETH发错了钱包地址是可以找回的。找回是需要联系工作人员,反馈后让工作人员协助找回,这种情况是需要时间进行找回的,需要提供大量的交易过程信息。
但是要注意的是一般自充出现这种情况平台是不负责找回的,但是联系工作人员如果充值时间较短,处理简单的话一般是可以找回的,但需要花费一定的时间以及人力和物力。
(6)以太坊私钥被别人知道扩展阅读:
如ETH等,充值错了币种,需要去咨询平台那边,看能否找回。每个平台都掌控了所有充值地址的私钥,如果转账完成了,那币肯定是在充值地址里面,主要看平台是否愿意帮找回。
小额的平台大概率是不会愿意的,因为涉及到导出私钥等,风险很大,所以充值前一定要仔细看清楚。如果自己转币转错地址了的。比如BCH转到BTC地址里面去了,实际上把那个比特币地址的私钥导入BCH钱包就可以了,其他的币也是类似。
如果是转到错误的地址了,如ETH转账转到别人的地址了,可以先去查看这笔转账有没有被确认,矿工是否已经打包。如果矿工已经将交易打包完毕,ETH已经从你的钱包中转出了,那么交易是无法撤销的。
『柒』 能一直往下查到从我被盗的以太坊钱包流出的以太币的所有地址吗
找高手
『捌』 “我”钱包里的eth是怎么被盗的
新手不要折腾钱包,可以把币放在值得信任的交易所代为保管。
私钥务必保护好,不要让除了自己的任何人知道。
钱包非常重要,如果要使用,要充分了解选择。
『玖』 知道RAS的公钥,如何通过程序加密一个字符串呀 私钥在别人手上,不用我解密。使用软件VS2005/CBuilder
//------------rsa.h--------------------
#ifndef RSAH
#define RSAH
//-------------------------------------------------------------------------
#include <iostream>
#include <windows.h>
#include <wincrypt.h>
typedef struct tagRSAFileStruct
{
char m_szVersion[11];
char m_szDate[21];
char m_szPrivider[61];
char m_szCustomer[61];
char m_szUserID[21];
char m_szPubKey[2049];
char m_szPrvKey[2049];
char m_szMD5Str[33];
}RSAFile;
//-------------------------------------------------------------------------
class XRSA
{
private:
unsigned int m_iErrorNo;
unsigned char Char2Hex(unsigned char byVal);
void Char2HexStr(unsigned char byVal, char * pszBuffer);
char *m_pszPubKey, *m_pszPrvKey;
char *m_pszOutData;
public:
XRSA();
~XRSA();
public:
int GetErrorNo();
//解密文件
int Decrypt(unsigned char *pszKey, //解密用密钥
DWORD dwKeyLen, //密钥长度
unsigned char *pszInBuffer,//输入密文文件
DWORD dwInLen,//输入密文文件长度
unsigned char **pszOutBuffer, //输出明文文件
DWORD &dwOutLen //输出明文文件长度
);
//加密文件
int Encrypt(unsigned char *pszKey,//加密用的密钥
DWORD dwKeyLen , //加密密钥长度
unsigned char *pszInBuffer,//输入明文文件
DWORD dwInLen, //输入明文文件长度
unsigned char **pszOutBuffer ,//输出密文文件
DWORD &dwOutLen //输出密文文件长度
);
int GenerateRSAKey(unsigned char **pszPubKey, //公钥文件
DWORD &dwPubKeyLen, //公钥的长度
unsigned char **dwPrvKey,//私钥文件
DWORD &dwPrvKeyLen //私钥的长度
);
public:
int HexStr2Hex(char *pszBuffer, //Hex data buffer
int iInLen, //Hex data len
char *pszHexBuffer //以输出结果,以字符串形式
//必须保证该空间至少是输入长度的2倍+1
);
int Hex2HexStr(char *pszHexBuffer, int iInLen, char *pszBuffer);
};
//-------------------------------------------------------------------------
#endif
//------------rsa.cpp--------------------
#include "RSA.H"
#include "stdio.h"
unsigned char XRSA::Char2Hex(unsigned char val)
{
if (val >= '0' && val <= '9')
return val - 0x30;
else if (val >= 'A' && val <= 'F')
return (val - 0x41 + 10);
else if (val >= 'a' && val <= 'f')
return (val - 0x61 + 10);
else
return 0;
}
void XRSA::Char2HexStr(unsigned char val, char * buff)
{
sprintf(buff, "%02x", val);
buff[2]=0;
return;
}
int XRSA::HexStr2Hex(char *buff, int len, char *hexbuff)
{
unsigned char hi4, low4, byval;
int i,j;
for (i=0, j=0; i<len; i+=2, j++)
{
hi4 = Char2Hex(buff[i]);
if (i<len)
low4 = Char2Hex(buff[i+1]);
else
low4 = 0;
byval = hi4 * 0x10 + low4;
hexbuff[j] = byval;
}
return j;
}
int XRSA::Hex2HexStr(char *hex, int len, char *buff)
{
char tempbuff[10];
memset(buff, 0, len*2+1);
for (int i=0; i<len; i++)
{
Char2HexStr(hex[i], tempbuff);
strcat(buff, tempbuff);
}
return len * 2;
}
//-----------------------------------------------------------
XRSA::XRSA()
{
m_iErrorNo = 0;
m_pszPubKey = NULL;
m_pszPrvKey = NULL;
m_pszOutData = NULL;
}
//-----------------------------------------------------------
XRSA::~XRSA()
{
if(m_pszPubKey != NULL)
{
delete []m_pszPubKey;
m_pszPubKey = NULL;
}
if(m_pszPrvKey != NULL)
{
delete []m_pszPrvKey;
m_pszPrvKey = NULL;
}
if(m_pszOutData != NULL)
{
delete []m_pszOutData;
m_pszOutData = NULL;
}
}
//-----------------------------------------------------------
int XRSA::Decrypt(unsigned char *pszKey, //解密用密钥, HexStr
DWORD dwKeyLen, //密钥长度
unsigned char *pszInBuffer, //输入密文缓冲区
DWORD dwInLen, //输入密文长度
unsigned char **pszOutBuffer, //输出明文
DWORD &dwOutLen //输出明文长度
)
{
//var begin ------------------------------------------------
HCRYPTPROV t_hCryptProv; //临时的密钥容器句柄
HCRYPTKEY t_hKey; //临时的密钥句柄
int result = 0; //返回结果值,如果正常返回为0
unsigned char *tempDivSrcData;
int j=0;
int t=0;
char *pszRealKey, *pszPointer;
//var end -------------------------------------------------
pszRealKey = new char[dwKeyLen];
dwKeyLen = HexStr2Hex(pszKey, dwKeyLen, pszRealKey);
//连接密钥容器
/*不管密钥容器存在不存在先干掉它再生成,如果生成失败就返回-1*/
CryptAcquireContext(&t_hCryptProv,"Mecrt Temp CSP",NULL, PROV_RSA_FULL,CRYPT_DELETEKEYSET);
if(!CryptAcquireContext(&t_hCryptProv,"Mecrt Temp CSP",NULL, PROV_RSA_FULL,CRYPT_NEWKEYSET))
{
m_iErrorNo = GetLastError();
delete []pszRealKey;
return -1;
}
//------------------------------------------------------------
/*倒入解密用的密钥文件,如果失败返回-2*/
if(!CryptImportKey(t_hCryptProv, pszRealKey, dwKeyLen, 0, 0,&t_hKey))
{
m_iErrorNo = GetLastError();
delete []pszRealKey;
return -2;
}
//-------------------------------------------------------------
if(m_pszOutData != NULL)
{
delete []m_pszOutData;
}
m_pszOutData = new char[dwInLen * 128 + 1];
*pszOutBuffer = m_pszOutData;
pszPointer = m_pszOutData;
tempDivSrcData = new unsigned char[128+1];
//-------------------------------------------------------------
// 数据解密
//------------------------------------------------------------------------
for(int i=0; i*128 < (int)dwInLen;i++)
{
pszInBuffer += i*128;
if( (dwInLen - i*128) > 0 ) j = 128;
else j = (dwInLen - i*128);
memset(tempDivSrcData,0x00,128+1);
memcpy(tempDivSrcData, pszInBuffer, j);
if(!CryptDecrypt(t_hKey, 0, true, 0, tempDivSrcData,(unsigned long *)&j))
{
m_iErrorNo = GetLastError();
result = -2;
break;
}
t += j;
memcpy(pszPointer + j, tempDivSrcData,j);
pszPointer = pszPointer + j;
}
//--------------------------------------------------
dwOutLen = t;
//----------------------------------------------------------------
//-------------------------结束清空垃圾----------------------
delete tempDivSrcData;
delete []pszRealKey;
CryptDestroyKey(t_hKey);
CryptReleaseContext(t_hCryptProv,0);
return result;
}
//---------------------------------------------------------------------------
int XRSA::Encrypt(unsigned char *pszKey, //加密用的密钥,HexStr
DWORD dwKeyLen , //加密密钥长度
unsigned char *pszInBuffer, //需要加密的缓冲区
DWORD dwInLen, //需要加密的缓冲区长度
unsigned char **pszOutBuffer, //输出密文
DWORD &dwOutLen //输出密文长度
)
{
//var begin ------------------------------------------------
HCRYPTPROV t_hCryptProv; //临时的密钥容器句柄
HCRYPTKEY t_hKey; //临时的密钥句柄
int result = 0; //返回结果值,如果正常返回为0
unsigned char *tempDivSrcData;
int j=0;
int t=0;
char *pszRealKey, *pszPointer;
//var end -------------------------------------------------
pszRealKey = new char[dwKeyLen];
dwKeyLen = HexStr2Hex(pszKey, dwKeyLen, pszRealKey);
//连接密钥容器
/*不管密钥容器存在不存在先删除它再生成,如果生成失败就返回-1*/
CryptAcquireContext(&t_hCryptProv,"Mecrt Temp CSP",NULL, PROV_RSA_FULL,CRYPT_DELETEKEYSET);
if(!CryptAcquireContext(&t_hCryptProv,"Mecrt Temp CSP",NULL, PROV_RSA_FULL,CRYPT_NEWKEYSET))
{
m_iErrorNo = GetLastError();
delete []pszRealKey;
return -1;
}
//------------------------------------------------------------
/*倒入解密用的密钥文件,如果失败返回-2*/
if(!CryptImportKey(t_hCryptProv, pszRealKey, dwKeyLen, 0, 0, &t_hKey))
{
m_iErrorNo = GetLastError();
delete []pszRealKey;
return -2;
}
//-------------------------------------------------------------
if(m_pszOutData != NULL)
{
delete []m_pszOutData;
}
m_pszOutData = new char[dwInLen * 128 + 1];
*pszOutBuffer = m_pszOutData;
pszPointer = m_pszOutData;
tempDivSrcData = new unsigned char[128+1];
//-------------------------------------------------------------
// 数据加密
for(int i=0; i*117 < (int)dwInLen;i++)
{
pszInBuffer += i * 117;
if( (dwInLen - i*117) > 0 ) j = 117;
else j = (dwInLen - i*117);
memset(tempDivSrcData,0x00,128+1);
memcpy(tempDivSrcData, pszInBuffer, j);
if(!CryptEncrypt(t_hKey, 0, true, 0, tempDivSrcData, (unsigned long *)&j, 128))
{
m_iErrorNo = GetLastError();
result = -3;
break;
}
t += j;
memcpy(pszPointer,tempDivSrcData,j);
pszPointer = pszPointer + j;
}
dwOutLen = t;
//----------------------------------------------------------------
//-------------------------结束清空垃圾----------------------
delete []tempDivSrcData;
delete []pszRealKey;
CryptDestroyKey(t_hKey);
CryptReleaseContext(t_hCryptProv,0);
return result;
}
//---------------------------------------------------------------------------
int XRSA::GenerateRSAKey(unsigned char **pszPubKey, //公钥数据,输出HexStr
DWORD &dwPubKeyLen, //公钥长度,输出
unsigned char **dwPrvKey, //私钥文件,输出HexStr
DWORD &dwPrvKeyLen //私钥长度,输出
)
{
//-------------------------Var Begin----------------------------------
HCRYPTPROV hCryptProv; //密钥容器CSP句柄
HCRYPTKEY hKey; //密钥文件的句柄
int result = 0; //函数默认返回值为0表示正常结束
char * pszTempPubKey, * pszTempPrvKey;
//-------------------------Var End------------------------------------
CryptAcquireContext(&hCryptProv,"Mecrt CSP",NULL, PROV_RSA_FULL,CRYPT_DELETEKEYSET);
if(!CryptAcquireContext(&hCryptProv,"Mecrt CSP",NULL, PROV_RSA_FULL,CRYPT_NEWKEYSET))
{
m_iErrorNo = GetLastError();
return -1;
}
//-------------------------------------------------------------------------
if (!CryptGenKey(hCryptProv,AT_KEYEXCHANGE ,0x04000000 |CRYPT_EXPORTABLE,&hKey))
{
m_iErrorNo = GetLastError();
return -2;
}
//---------------检查输出Key的长度------------------------------------------
if(!CryptExportKey(hKey,NULL,PUBLICKEYBLOB,0, NULL, &dwPubKeyLen))
{
m_iErrorNo = GetLastError();
result = -3;
goto __END;
}
//----------------取PubKey的Hex值-------------------------------------------
pszTempPubKey = new char[dwPubKeyLen];
if(!CryptExportKey(hKey,NULL,PUBLICKEYBLOB,0, pszTempPubKey, &dwPubKeyLen))
{
m_iErrorNo = GetLastError();
result = -3;
delete pszTempPubKey;
goto __END;
}
//------------输出PubKey至HexStr--------------------------------------------
if(m_pszPubKey != NULL)
{
delete []m_pszPubKey;
}
m_pszPubKey = new char[dwPubKeyLen * 2 + 1];
dwPubKeyLen = Hex2HexStr(pszTempPubKey, dwPubKeyLen, m_pszPubKey);
//---------------检查输出Key的长度------------------------------------------
if(!CryptExportKey(hKey, NULL, PRIVATEKEYBLOB,0, NULL, &dwPrvKeyLen))
{
m_iErrorNo = GetLastError();
result = -4;
delete pszTempPubKey;
goto __END;
}
//----------------取PubKey的Hex值-------------------------------------------
pszTempPrvKey = new char[dwPrvKeyLen];
if(!CryptExportKey(hKey, NULL, PRIVATEKEYBLOB, 0, pszTempPrvKey, &dwPrvKeyLen))
{
m_iErrorNo = GetLastError();
result = -4;
delete pszTempPubKey;
delete pszTempPrvKey;
goto __END;
}
//------------输出PrvKey至HexStr--------------------------------------------
if(m_pszPrvKey != NULL)
{
delete []m_pszPrvKey;
}
m_pszPrvKey = new char[dwPrvKeyLen * 2 + 1];
dwPrvKeyLen = Hex2HexStr(pszTempPrvKey, dwPrvKeyLen, m_pszPrvKey);
__END:
CryptDestroyKey(hKey);
CryptAcquireContext(&hCryptProv,"Mecrt CSP",NULL, PROV_RSA_FULL,CRYPT_DELETEKEYSET);
CryptReleaseContext(hCryptProv,0);
return result ;
}
//-------------------------------------------------------------------------
int XRSA::GetErrorNo()
{
return m_iErrorNo;
}
//----------------调用例子--------------------------
XRSA rsa;
rsa.Encrypt(.....);