Ah... got it: SHA256 is equivalent to ruby's sha2, and not sha256 from
openssl (this was completely wrong).
In ruby:
>> require 'digest/sha2'
=> true
>> Digest::SHA2.hexdigest 'sha256'
=> "5d5b09f6dcb2d53a5fffc60c4ac0d55fabdf556069d6631545f42aa6e3500f2e"
In H2:
CALL HASH('SHA256', STRINGTOUTF8('sha256'), 1);
gives:
X'5d5b09f6dcb2d53a5fffc60c4ac0d55fabdf556069d6631545f42aa6e3500f2e'
5d5b09f6dcb2d53a5fffc60c4ac0d55fabdf556069d6631545f42aa6e3500f2e
So we have a match.
My 1st question still interests me: how to efficiently store this sha256 in
H2? Which would be a good data type?
Regards,
Christian
On Thursday, April 19, 2012 6:37:01 PM UTC+2, Christian MICHON wrote:
> Yes, I knew about it.
>
> Yet, this gives me 2 problems:
> - increase of 32 char to 64 char for storing the hash. Maybe I should
> store this in a different way, like binary to save half the space?
> - I cannot figure out how to have the same results between hash() in H2
> and sha256 from OpenSSL/ruby
>
> As said, I use ruby and in ruby OpenSSL::Digest::Digest.new("sha256") ==
> "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
>
> Could you please show me how to get the same value using hash() in H2?
>
> I tried call hash('SHA256',stringtoutf8('sha256'),1) without success...
>
> Regards,
> Christian
>
> On Thursday, April 19, 2012 6:04:36 PM UTC+2, Thomas Mueller wrote:
>>
>> Hi,
>>
>> H2 supports SHA256 natively, I would use it instead of MD5:
>> http://h2database.com/html/functions.html#hash
>>
>> Regards,
>> Thomas
>>
>>
>>
>>
>> On Saturday, April 14, 2012, Christian MICHON wrote:
>>
>>> On Friday, April 13, 2012 9:51:52 PM UTC+2, Christian MICHON wrote:
>>>>
>>>> Hi,
>>>>
>>>> I need to detect repetitions and updates in (relatively) small H2
>>>> tables.
>>>>
>>>> As such, I currently implemented using ruby and an external ORM a
>>>> md5sum calculation of all the keys concatenated into a string following
>>>> their natural order, which is stored back into a specific key.
>>>>
>>>> This involves a lot of communication with the H2 server, and I wish to
>>>> have it done natively (using java itself).
>>>> (...)
>>>>
>>>>
>>> After many experiments, I finally cracked it.
>>>
>>> Sharing it here, in case someone else finds this useful one day...
>>>
>>> CREATE ALIAS MD5 FOR
>>> "org.apache.commons.codec.digest.DigestUtils.md5Hex(java.lang.String)";
>>> CREATE TABLE TEST(ID IDENTITY, NAME VARCHAR(255), MD5 VARCHAR(32) AS
>>> MD5(NAME));
>>> INSERT INTO TEST (NAME) VALUES('The quick brown fox jumps over the lazy
>>> dog');
>>> SELECT * FROM TEST ORDER BY ID;
>>>
>>> Really powerful tool this H2 db... Congratulations again...
>>>
>>> Christian
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "H2 Database" group.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msg/h2-database/-/UV44utlLiAYJ.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected].
>>> For more options, visit this group at
>>> http://groups.google.com/group/h2-database?hl=en.
>>>
>>
--
You received this message because you are subscribed to the Google Groups "H2
Database" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/h2-database/-/BtKBjeSJyBcJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/h2-database?hl=en.