Skip to content

Instantly share code, notes, and snippets.

@bahamas10
Created March 11, 2014 17:57
Show Gist options
  • Save bahamas10/9491330 to your computer and use it in GitHub Desktop.
Save bahamas10/9491330 to your computer and use it in GitHub Desktop.
ssh key fingerprint in objective C
#import <Foundation/Foundation.h>
@interface NSData (MD5)
- (NSString *)MD5String;
@end
#import <CommonCrypto/CommonDigest.h>
@implementation NSData (MD5)
- (NSString *)MD5String {
unsigned char result[16];
CC_MD5(self.bytes, self.length, result);
return [NSString stringWithFormat:
@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
];
}
@end
int main(int argc, const char * argv[])
{
@autoreleasepool {
// get the public key
NSString *pubkey = [[NSString alloc] initWithData:[NSData dataWithContentsOfFile:[@"~/.ssh/id_rsa.pub" stringByExpandingTildeInPath]] encoding:NSASCIIStringEncoding];
NSLog(@"pubkey = %@", pubkey);
// extract the middle portion
NSString *dataEncoded = [pubkey componentsSeparatedByString:@" "][1];
// base64 decode it
NSData *dataDecoded = [[NSData alloc] initWithBase64EncodedString:dataEncoded options:0];
// md5 it
NSString *md5 = [dataDecoded MD5String];
// add colons
NSMutableString *_fp = [NSMutableString new];
for (int i = 0; i < md5.length; i++) {
[_fp appendString:[md5 substringWithRange:NSMakeRange(i, 1)]];
if (i % 2 && i < md5.length - 1)
[_fp appendString:@":"];
}
// make everything lowercase
NSString *fp = [_fp lowercaseString];
NSLog(@"fingerprint = %@", fp);
}
return 0;
}
@bahamas10
Copy link
Author

output

2014-03-11 10:57:07.430 pubkey[89310:303] pubkey = ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+JUivj9iHGMnZ0eVS3hJ+jy6gHYLqwK5S6K6r/TaF0uuJv5mYEIIqhkEeg17XkYUZDW6Xcy0GdHNDI53DKTZhF4Ki3KnCQCfGYtLlNsQcvZ08WNTzXZDqXRvkIPwaGXppzuIohoI5J0Y1k89UrjfqBaY8n7JK+dAisA+OL/NXtdu6G+l3bQY28xEKTUkHSXpInQGRieS6veDReMlRg9hlpTWviGTx3SF4O0sD5SuggI+g4dYk311j8iR/AodGp0YxSWr694iBCiGJ5RtXbIaLPl2gdgSeKgonmTqdo3jVeMp7XljDxL+XPAf+Y5YbnhPUNd8P8Q8QElUfIwCJJ6hD dave@Operationss-MacBook-Pro.local
2014-03-11 10:57:07.431 pubkey[89310:303] fingerprint = cd:57:83:d3:b9:4b:a1:96:92:78:cf:bb:4f:b3:6e:cf
Program ended with exit code: 0

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