Hi, I am playing around with the idea of using hashing algorithms to store private data in the cloud. I recon it should be doable on most client platforms, because of the availability of hashing algorithms. - Each blob of data will have its own unique salt associated. - A password + salt is used to create a hash (only salt leaves the client). - The hash is used to encode the data in a rather simple manner. - The encoded data + salt + algorithm version is to be stored in the cloud. The hash can be used to decode the encoded data again. The algorith implementation is here: ARosettaStoneV1.java[^] Here is a unit test: RosettaStoneV1Test.java[^] As an example the unit test can produce:
quebird.brokenclouds.core.unit.stones.v1.RosettaStoneV1Test@37bba400.testEncodeAndDecode():
#0: MD5 + UTF-8 on 'Hello World! Hellø Wørld! 0123456789 §$!#€%&/()=?+´`¨^*'-_.:,;<>'
encode: --- START --- [algorithm=BC1+MD5]
encode: salt[length=36] = 49 52 102 50 53 99 102 101 45 48 50 101 56 45 52 50 53 97 45 97 48 52 50 45 100 98 50 98 50 52 100 97 49 51 57 53
encode: data[length=71] = 72 101 108 108 111 32 87 111 114 108 100 33 32 72 101 108 108 -61 -72 32 87 -61 -72 114 108 100 33 32 48 49 50 51 52 53 54 55 56 57 32 -62 -89 36 33 35 -30 -126 -84 37 38 47 40 41 61 63 43 -62 -76 96 -62 -88 94 42 39 45 95 46 58 44 59 60 62
encode: hash[length=16] = 37 5 88 33 -2 -28 58 -32 71 27 119 -120 22 -87 -91 -2
encode: padding[length=16] = 84 24 -28 -92 25 61 -97 -27 125 -98 71 -57 43 24 -98 100
encode: output[length=88] = 0 0 0 0 0 0 0 71 -87 79 10 -37 4 109 54 -115 -15 -121 106 109 -71 -60 106 -111 -88 82 -41 -104 -89 85 70 65 -38 127 49 -111 -77 16 -56 -14 -85 -94 81 -104 29 54 -8 88 43 63 35 89 -18 -114 58 90 48 -94 -52 57 35 59 116 74 -45 123 43 75 -5 -128 52 101 -95 52 -118 27 32 57 83 77 72 -1 123 -124 95 -110 51 120
encode: --- END --- [algorith