Increment Nonce by any fixed value in loop
    6 views (last 30 days)
  
       Show older comments
    
    Zeeshan Abbas
 on 24 Jun 2019
  
    
    
    
    
    Commented: Zeeshan Abbas
 on 26 Jun 2019
            I have the nonce value in hex. Let say:
nonce = {'00' '11' '22' '33' '44' '55'};
I need to add any fixed value 'x'(hex) to this value in loop and need to save every new value.
I was doing this like:
nonce = {'00' '11' '22' '33' '44' '55'};
for i=1:5
    nonce(i) = nonce + 01;
    i = i+1;
end
But I am not acheiving what I need.
1 Comment
  Jan
      
      
 on 25 Jun 2019
				Please mention, what you expect as output. Having only not running code does not clarify, what you want to achieve.
Your code contains some bugs:
for i=1:5
    nonce(i) = nonce + 01;
    % Here on the left side there is a scalar cell element, and on
    % the right you try to add 01 (which is the same as 1) to a
    % cell vector.
    i = i+1;  % i is iterated by the FOR loop already
              % so do not increase it manually
end
Accepted Answer
  Alex Mcaulley
      
 on 24 Jun 2019
        Using a loop:
nonce = {'00' '11' '22' '33' '44' '55'};
x = '01';
for i = 1:numel(nonce)
    nonce{i} = dec2hex(hex2dec(nonce{i}) + hex2dec(x),2);
end
Or using cellfun:
nonce = {'00' '11' '22' '33' '44' '55'};
x = '01';
nonce = cellfun(@(y) dec2hex(hex2dec(y) + hex2dec(x),2),nonce,'uni',0);
3 Comments
  Alex Mcaulley
      
 on 25 Jun 2019
				Well, then an option is:
nonce = {'00' '11' '22' '33' '44' '55'};
x = '01';
a = strcat(nonce{:});
for i = 2:6
    a(i,:) = dec2hex(hex2dec(a(i-1,:)) + hex2dec(x),12);
end
nonce = mat2cell(a,ones(6,1),2*ones(6,1))
nonce =
  6×6 cell array
    '00'    '11'    '22'    '33'    '44'    '55'
    '00'    '11'    '22'    '33'    '44'    '56'
    '00'    '11'    '22'    '33'    '44'    '57'
    '00'    '11'    '22'    '33'    '44'    '58'
    '00'    '11'    '22'    '33'    '44'    '59'
    '00'    '11'    '22'    '33'    '44'    '5A'
At the end of the code, each row of nonce corresponds with the value in each iteration.
More Answers (1)
  Jan
      
      
 on 25 Jun 2019
        
      Edited: Jan
      
      
 on 25 Jun 2019
  
      nonce = {'00' '11' '22' '33' '44' '55'};
toAdd = hex2dec('01');
for k = 1:5
    nonce{k} = dec2hex(hex2dec(nonce{k}) + toAdd);
end
It might be easier to work with a double vector, if you want to perform calculations. Then hex strings are rather inefficient.
0 Comments
See Also
Categories
				Find more on Encryption / Cryptography in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

