scratch/output/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/index.html
Yann Esposito 70314df976 Recompiled
2012-05-02 17:43:56 +02:00

250 lines
No EOL
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="iPhone, Objective-C, programmation">
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/solarized.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/idc.css" />
<link href='http://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomfr"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="base64 et sha1 sur iPhone" type="text/html" hreflang="fr" href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/" />
<link rel="alternate" lang="en" xml:lang="en" title="base64 and sha1 on iPhone" type="text/html" hreflang="en" href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/" />
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script>
<script type="text/javascript" src="/Scratch/js/highlight/highlight.pack.js"></script>
<script type="text/javascript" src="/Scratch/js/article.js"></script>
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
<title>base64 et sha1 sur iPhone</title>
</head>
<body lang="fr" class="article">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="Chargement en cours..."/></div>');
// ]]>
</script>
<div id="content">
<div id="choix">
<div class="return"><a href="#entete">&darr; Menu &darr;</a></div>
<div id="choixlang">
<a href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/" onclick="setLanguage('en')">in English</a>
</div>
<div class="flush"></div>
</div>
<div id="titre">
<h1>
base64 et sha1 sur iPhone
</h1>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<p>Allons directement à lessentiel&nbsp;:
voici deux fonctions à intégrer à votre application iPhone pour afficher lencodage en base64 ou en hexadecimal du hash sha1 dun string en Objective-C pour iPhone.</p>
<p>Pour lusage cest très simple, copiez le code dans la classe de votre choix.
Puis&nbsp;:</p>
<pre><code class="objective-c">#import &lt;CommonCrypto/CommonDigest.h&gt;
...
NSString *b64_hash = [self b64_sha1:@"some NSString to be sha1'ed"];
...
NSString *hex_hash = [self hex_sha1:@"some NSString to be sha1'ed"];
</code></pre>
<p>Lalgorithme pour lencodage en <code>base64</code> doit être programmé sur iPhone.
Il ny a pas de librairie officielle qui soccupe de ça.</p>
<div class="codefile"><a href="/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/code/iphone_base64_sha1.c">&#x27A5; iphone_base64_sha1.c</a></div>
<pre><code class="c">
- (unsigned char *)sha1:(NSString *)baseString result:(unsigned char *)result {
char *c_baseString=(char *)[baseString UTF8String];
CC_SHA1(c_baseString, strlen(c_baseString), result);
return result;
}
- (NSString *)base64:(unsigned char *)result {
NSString *password=[[NSString alloc] init];
static const unsigned char cb64[65]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
for (int i=0; i&lt;CC_SHA1_DIGEST_LENGTH; i+=3) {
password=[password stringByAppendingFormat:@"%c%c%c%c",
cb64[(result[i] &amp;0xFC)&gt;&gt;2],
cb64[((result[i] &amp; 0x03) &lt;&lt; 4)
| ((result[i + 1] &amp; 0xF0) &gt;&gt; 4)],
cb64[((result[i + 1] &amp; 0x0F) &lt;&lt; 2)
| ((result[i + 2] &amp; 0xC0) &gt;&gt; 6)],
cb64[result[i+2]&amp;0x3F]
];
}
return password;
}
- (NSString *)hexadecimalRepresentation:(unsigned char *)result {
NSString *password=[[NSString alloc] init];
for (int i=0; i&lt;CC_SHA1_DIGEST_LENGTH; i++) {
password=[password stringByAppendingFormat:@"%02x", result[i]];
}
return password;
}
- (NSString *)b64_sha1:(NSString *)inputString {
unsigned char result[CC_SHA1_DIGEST_LENGTH+1];
[self sha1:inputString result:result];
return [self base64:result];
}
- (NSString *)hex_sha1:(NSString *)inputString {
unsigned char result[CC_SHA1_DIGEST_LENGTH+1];
[self sha1:inputString result:result];
return [self hexadecimalRepresentation:result];
}
</code></pre>
</div>
<div id="social">
<div class="left"> <a href="https://twitter.com/share" class="twitter-share-button" data-via="yogsototh">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
</div>
<div class="left"> <div class="g-plusone" data-size="medium" data-annotation="inline" data-width="106"></div>
<script type="text/javascript">
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
</script>
</div>
<div class="flush"></div>
</div>
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomfr">
s'abonner
</a>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#comment').hide();
$('#clickcomment').click(showComments);
});
function showComments() {
$('#comment').show();
$('#clickcomment').fadeOut();
}
document.write('<div id="clickcomment">Commentaires &amp; Partage</div>');
</script>
<div class="flush"></div>
<div class="corps" id="comment">
<h2 class="first">commentaires</h2>
<noscript>
Vous devez activer javascript pour commenter.
</noscript>
<script type="text/javascript">
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
var idcomments_post_id = '/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/';
var idcomments_post_url = 'http://yannesposito.com/Scratch/fr/blog/2010-09-02-base64-and-sha1-on-iPhone/';
</script>
<span id="IDCommentsPostTitle" style="display:none"></span>
<script type='text/javascript' src='/Scratch/js/genericCommentWrapperV2.js'></script>
</div>
<div id="entete" class="corps_spaced">
<div id="liens">
<ul><li><a href="/Scratch/fr/">Bienvenue</a></li>
<li><a href="/Scratch/fr/blog/">Blog</a></li>
<li><a href="/Scratch/fr/softwares/">Softwares</a></li>
<li><a href="/Scratch/fr/about/">À propos</a></li></ul>
</div>
<div class="flush"></div>
<hr/>
<div id="next_before_articles">
<div id="previous_articles">
articles précédents
<div class="previous_article">
<a href="/Scratch/fr/blog/2010-08-31-send-mail-from-command-line-with-attached-file/"><span class="nicer">«</span>&nbsp;Envoyer un mail en ligne de commande avec un fichier attaché</a>
</div>
<div class="previous_article">
<a href="/Scratch/fr/blog/2010-08-23-Now-heberged-on-heroku/"><span class="nicer">«</span>&nbsp;Maintenant sur Heroku</a>
</div>
<div class="previous_article">
<a href="/Scratch/fr/blog/2010-07-09-Indecidabilities/"><span class="nicer">«</span>&nbsp;Indécidabilités (partie 1)</a>
</div>
</div>
<div id="next_articles">
articles suivants
<div class="next_article">
<a href="/Scratch/fr/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Utilisation de git pour calculer les mtimes&nbsp;<span class="nicer">»</span></a>
</div>
<div class="next_article">
<a href="/Scratch/fr/blog/2010-10-06-New-Blog-Design-Constraints/">Contraintes du design de ce blog&nbsp;<span class="nicer">»</span></a>
</div>
<div class="next_article">
<a href="/Scratch/fr/blog/2010-10-10-Secure-eMail-on-Mac-in-few-steps/">Sécurisez vos emails&nbsp;<span class="nicer">»</span></a>
</div>
</div>
<div class="flush"></div>
</div>
</div>
<div id="bottom">
<div>
<a href="https://twitter.com/yogsototh">Follow @yogsototh</a>
</div>
<div>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/deed.fr">Droits de reproduction ©, Yann Esposito</a>
</div>
<div id="lastmod">
Écrit le : 02/09/2010
modifié le : 16/11/2011
</div>
<div>
Site entièrement réalisé avec
<a href="http://www.vim.org">Vim</a>
et
<a href="http://nanoc.stoneship.org">nanoc</a>
</div>
</div>
<div class="clear"></div>
</div>
</body>
</html>