[Cryptography Team] Re: interleaving indexing has me scrambled

Robert Withers robert.w.withers at gmail.com
Thu Dec 17 05:51:08 UTC 2015


Oh Lord, I must correct my blasphemy, implying that God does harm; He 
does not. However, he did establish the Law and that is likely what is 
in operation, without my intention. Faith allows one to escape the 
confines of the Law, through salvation. Heathen Come.

I wish to rename SecureSession, to JacobsLadder. And it is so.

On 12/17/2015 12:04 AM, Robert Withers wrote:
> God works in mysterious ways, doesn't he? Not that I had any intention
> of breaking it. Not what I am about. Well, perhaps it isn;t meant to be
> interleaved just now. Perhaps,,, we go into the future, togehter.
>
> peace,
> robert
>
> On 12/16/2015 11:59 PM, Robert Withers wrote:
>> I had to bail on this. I really don't understand what it is doing. sorry
>> it didn't deliver, hopefully I'll be able to get your back
>>
>> regards,
>>
>> robert
>>
>> On 12/16/2015 10:23 PM, Robert Withers wrote:
>>> In particular the tempIndex of the second scan goes out of range and I
>>> scratching my head. If anyone actually wants to look at how this method
>>> works and can help, awesome! :)
>>>
>>> best,
>>> robert
>>>
>>>
>>>
>>> ---
>>>
>>> interleave: symbols blockCount: blockCount
>>>
>>>      | symbolsPerChunk table interleaved interleavedBlock fourChunk
>>> symbolsPerBlock |
>>>      ((symbols size \\ 4) > 0) ifTrue: [self error: 'interleaving bytes
>>> size not a multiple of 4'].
>>>      symbolsPerChunk := symbols size // blockCount.
>>>      symbolsPerBlock := symbols size // (blockCount // 4).
>>>      table := OrderedCollection new: 4 withAll: 0.
>>>      table at: 1 put: (ByteArray new: symbolsPerChunk withAll: 0).
>>>      table at: 2 put: (ByteArray new: symbolsPerChunk withAll: 0).
>>>      table at: 3 put: (ByteArray new: symbolsPerChunk withAll: 0).
>>>      table at: 4 put: (ByteArray new: symbolsPerChunk withAll: 0).
>>>      interleavedBlock := ByteArray new: (symbols size / blockCount)
>>> withAll: 0.
>>>      interleaved := ByteArray new: (symbols size + 1) withAll: 0.
>>>      interleaved at: 1 put: blockCount.
>>>
>>>      0 to: blockCount - 1 do: [ :blockIndex |
>>>          | end start |
>>>          start := blockIndex * symbolsPerBlock + 1.
>>>          end := (blockIndex + 1) * symbolsPerBlock.
>>>          fourChunk := symbols copyFrom: start to: end.
>>>          "first scan: bytes to populate the table"
>>>          0 to: 3 do: [ :chunkIndex |
>>>              | chunk slice symbol |
>>>              chunk := fourChunk copyFrom: (chunkIndex * symbolsPerChunk
>>> + 1) to: ((chunkIndex + 1) * symbolsPerChunk).
>>>               1 to: symbolsPerChunk do: [ :index |
>>>                  slice := table at: (chunkIndex + 1).
>>>                  symbol := chunk at: index.
>>>                  slice at: index put: symbol]].
>>>          "second scan: table to populate the interleaved bytes"
>>>          1 to: symbolsPerChunk do: [ :index |
>>>              0 to: 3 do: [ :chunkIndex |
>>>                  | localIndex offset tempIndex symbol |
>>>                  offset := symbolsPerBlock * blockIndex.
>>>                  tempIndex := index * 4 + chunkIndex - 3.
>>>                  localIndex := offset + tempIndex.
>>>                  symbol := (table at: (chunkIndex + 1)) at: index.
>>>                  interleavedBlock at: localIndex put: symbol]].
>>>          start := symbols size / blockCount * blockIndex + 1.
>>>          end := symbols size / blockCount * blockIndex +
>>> interleavedBlock size.
>>>          interleaved replaceFrom: (start + 1) to: (end + 1) with:
>>> interleavedBlock startingAt: 1].
>>>      ^ interleaved
>>
>

-- 
. .. .. ^,^ best, robert


More information about the Cryptography mailing list