我正在使用Java版本的Google App Engine.
我想创建一个函数,可以接收许多类型的对象作为参数.我想打印出对象的成员变量.每个对象可能不同,并且该功能必须适用于所有对象.我必须使用反射吗?如果是这样,我需要编写什么样的代码?
public class dataOrganization {
private String name;
private String contact;
private PostalAddress address;
public dataOrganization(){}
}
public int getObject(Object obj){
// This function prints out the name of every
// member of the object, the type and the value
// In this example, it would print out "name - String - null",
// "contact - String - null" and "address - PostalAddress - null"
}
Run Code Online (Sandbox Code Playgroud)
我该如何编写函数getObject?
当我在bitcoind服务器上调用getwork时,我得到以下内容:
./bitcoind getwork
{
"midstate" : "695d56ae173bbd0fd5f51d8f7753438b940b7cdd61eb62039036acd1af5e51e3",
"data" : "000000013d9dcbbc2d120137c5b1cb1da96bd45b249fd1014ae2c2b400001511000000009726fba001940ebb5c04adc4450bdc0c20b50db44951d9ca22fc5e75d51d501f4deec2711a1d932f00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000",
"hash1" : "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000",
"target" : "00000000000000000000000000000000000000000000002f931d000000000000"
}
Run Code Online (Sandbox Code Playgroud)
该协议似乎没有记录.如何根据此数据计算哈希值.我认为这些数据是小端的.那么第一步是将所有内容转换为大端?完成后,我计算数据的sha256.数据可以分为两个每个64字节的块.第一个卡盘的散列由中间状态给出,因此不必计算.
因此,我必须使用中间状态作为初始哈希值来使用sha256对chunck#2进行散列.一旦完成,我最终得到一个块2的哈希值,它是32字节.我再次计算此块的哈希值以获得最终哈希值.
然后,我将所有内容转换为小端并提交作品吗?
hash1用于什么?
我正在使用此代码将UUID转换为byte
public byte[] getIdAsByte(UUID uuid)
{
ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
bb.putLong(uuid.getMostSignificantBits());
bb.putLong(uuid.getLeastSignificantBits());
return bb.array();
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用此功能重新创建UUID,
public UUID frombyte(byte[] b)
{
return UUID.nameUUIDFromBytes(b);
}
Run Code Online (Sandbox Code Playgroud)
它与UUID不同.前后转换randomUUID会返回两个不同的.
UUID u = UUID.randomUUID();
System.out.println(u.toString());
System.out.println(frombyte(getIdAsByte(u)).toString());
Run Code Online (Sandbox Code Playgroud)
打印:
1ae004cf-0f48-469f-8a94-01339afaec41
8b5d1a71-a4a0-3b46-bec3-13ab9ab12e8e
Run Code Online (Sandbox Code Playgroud) 我正在尝试测试openid提供程序类.openid消费者类正在发出http请求.我正在使用wiremock模拟对此请求的响应.我试图模拟一个有效的openid响应.但是,有效响应取决于请求参数.使用wiremock,我可以设置一个模拟请求,其中响应的主体依赖于请求参数吗?
我想将文档中的一些excel单元格从序列号转换为该序列号的MD5哈希值.excel中是否有预编译的公式可以做到这一点,或者是我做VBA的唯一选择.如果是VBA,我该怎么做?
我正在尝试构建一个高度可用的超大量购物车应用程序.该应用程序将有一个如此之高的卷,我正在考虑使用cassandra而不是mysql的数据库.
现在,在购物车系统中,大多数数据库操作必须100%一致,而其他操作系统则不一定.
100%一致操作示例:保存付款确认.保存购买的物品清单.
不需要100%一致操作的事项示例:保存客户的地址(如果在付款时,数据库中没有保存地址,则认为它已丢失并再次询问客户).其他类似的事情.
现在,如果我在同一区域(Amazon EC2)中运行服务器群集,是否存在执行所有事务的主要障碍,即最大一致性事务.这会提供与mySQl Relational数据库相同的可靠性.请记住,我们在这里处理金融交易.
我的数据在cassandra中通常是"安全的".我的意思是完全意外的电源故障,随机光盘故障等等.
我正在开发一个可以点对点工作的java应用程序.在任何时候,全球将有超过5000个客户在线.每个客户端都会随着时间的推移创建小文件.我希望这些文件在所有客户端之间分发并存储,以便任何人都可以连接并下载filesdump.
有没有可以帮助的图书馆?
我正在尝试创建一个独特的CD-KEY放入我们的产品包装盒,就像用户用来注册产品的标准软件盒中的普通CD-KEY一样.
但是,我们不销售软件,我们正在销售用于刑事和医疗目的的DNA收集套件.用户将通过邮件收到唾液收集工具包,上面有CD-KEY,他们将使用该CD-KEY在我们的网站上创建一个帐户并获得他们的结果.测试结果将与CD-KEY相关联.这是我们必须将结果与患者联系起来的唯一方式.因此重要的是它不会失败:)
其中一个要求是CD-KEY列表必须充分"分散",以便不会有人输入错误的CD-KEY并且仍然允许其他人使用套件,从而混合使用两个套件.这可能会使我们承担数千美元的责任.
例如,它不能是数字的增量序列,例如
00001
00002
00003
......
原因是如果有人收到套件00002,但是偶然将其注册为000003,那么他的结果将与其他人匹配.所以它必须像信用卡号码...除非输入有效的序列,否则随机命中有效数字的几率是百万分之一......
此外,我们每年向各个提供商销售超过50,000个工具包(他们将使用我们的算法生成他们自己的CD-KEYS),因此我们无法维护所有先前发布的CD-KEYS列表以检查重复.该算法必须生成唯一的CD-KEY.
我们还要求能够使用快速检查算法验证CD-KEY是否有效,以便我们可以通知用户他输入的代码是否无效.这遗漏了许多哈希或MD5算法我相信.并且它不能是128位因为,谁会花时间在电脑屏幕上输入它?
到目前为止,这是我认为最终的CD-KEY结构看起来像
(4个char产品代码) - (4个char经销商代码) - (12个char唯一,可验证的CD-KEY)
Ex.384A - GTLD - {4565 - FR54 - EDF3}
为了确保KEYS的唯一性,我可以将当前日期(20090521)作为来源的一部分.我们不会每周多次生成唯一键,因此该值经常变化以达到唯一初始值.
我可以使用哪种算法来生成唯一键?
我必须以小端形式生成sha256数据哈希.在使用sha 256算法之前,我想知道是否必须先将其转换为big endian.或者,如果算法是"与endian无关"的.
编辑:对不起,我想我不清楚.我想知道的是:sha256算法需要用某些位填充消息的结尾.第一步是在消息的末尾添加1.然后,用零填充它直到结束.最后,您必须以位为单位添加消息的长度.我想知道的是这个填充是否可以用小端进行.例如,对于640位消息,我可以将最后一个字写为0x280(大端)或0x8002000(小端).这个填充可以用小端进行吗?
比特币是一种匿名加密数字货币.几个月前我得到了一个想法来加密一个文件,在这个文件中需要用比特币的消费证明来解密文件.当比特币被发送到给定地址时,它将显示在分布在对等网络中的块文件中.通过要求大量计算机执行复杂计算来确保块链的完整性.该计算的证明用作签名.
你认为有一种方法可以加密文件,解密它的唯一方法是提供:
结果是任何试图暴力破坏文件的人都会很快破产.而真正的用户只需要花一分钱来解密它.
java ×4
bitcoin ×2
sha256 ×2
algorithm ×1
cassandra ×1
cryptography ×1
encryption ×1
endianness ×1
excel ×1
junit ×1
md5 ×1
p2p ×1
primary-key ×1
reflection ×1
unique ×1
uuid ×1