Skip to content

Instantly share code, notes, and snippets.

@globby
Created March 4, 2014 00:35
Show Gist options
  • Save globby/9337839 to your computer and use it in GitHub Desktop.
Save globby/9337839 to your computer and use it in GitHub Desktop.
The Fletcher16, Fletcher32 and Fletcher64 algorithms
def Fletcher16(string):
a = map(ord,string)
b = [sum(a[:i])%255 for i in range(len(a)+1)]
return (sum(b) << 8) | max(b)
def Fletcher32(string):
a = map(ord,string)
b = [sum(a[:i])%65535 for i in range(len(a)+1)]
return (sum(b) << 16) | max(b)
def Fletcher64(string):
a = map(ord,string)
b = [sum(a[:i])%4294967295 for i in range(len(a)+1)]
return (sum(b) << 32) | max(b)
@orangecms
Copy link

For long inputs, this doesn't seem to work though. I compared the output against CyberChef's for the first paragraph from cipsum.com.

@orangecms
Copy link

@mrx23dot
Copy link

I think you have to apply modulo before summing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment