Repunit: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>ZéroBot
m r2.7.1) (Robot: Adding ko:레퓨닛
 
en>PrimeHunter
→‎Demlo numbers: fix reference
Line 1: Line 1:
== dHsXVV Jordan 6 Brazil HYQhzmNU ==
{{about|the content encoding scheme|the positional numerical format|Binary number}}
{{tooshort|date=February 2013}}
{{condense|date=February 2013}}


Top compound AD02 performed very well in stabilization of cognitive functions in a dose dependent manner. 24 31 % of treated patients showed stabilization of clinical progression. And in the group of kids with the most intellectual impairments  IQs less than 34  there were just as many girls as [http://www.srmcolleges.in/indexss.asp??p=15658-buy-cheap-High-OG-Family-Forever-1s-running-online-2014.html buy cheap High OG Family Forever 1s running online 2014] boys. Found the same [http://tsfdirect.com/contactss.php??p=3277-jordan-18-OG-white-varsity-red-sneaker-store-2014.html jordan 18 OG white varsity red sneaker store 2014] trend but very different numbers. <br><br>There also was a spike in shooting deaths. Fifty nine federal, state and local officers were killed by gunfire in 2010, a 20 percent jump from last year figures, when 49 were killed. "There is lots of debris and fast water  there's no visibility," said Doug McLaughlin, a volunteer firefighter working as a diver. The cars and trucks were submerged in 25 feet of water, he said. <br><br>The 66. Indeed, recent studies indicate that, in addition to or instead of the 26S proteasome, the 20S proteasome could be responsible for the degradation of oxidatively damaged proteins, which occurs in an ATP  and ubiquitin independent manner28. Another issue is the fact that the company's OvaDx and  Disease still require approval for from the FDA. Any regulatory delays could have a significant impact on the company's top line growth. <br><br>Ever since doctors performed the first stem cell transplant in the late 1950s, the so called [http://www.srmcolleges.in/indexss.asp??p=27355-When-Will-gs-ntrl-gry-7-Jordan-Come-Out.html When Will gs ntrl gry 7 Jordan Come Out] blank slate cells have held a promise that seems almost too good to be true: human body cells that can heal and perhaps cure what ails us. In the intervening decades, stem cell transplants have been used on thousands of cancer patients and are being hailed as a potential cure for Parkinson's disease, paralysis, and, in a new twist, aging skin.
'''Base64''' is a group of similar [[binary-to-text encoding]] schemes that represent [[binary data]] in an [[ASCII]] string format by translating it into a [[radix]]-64 representation. The term ''Base64'' originates from a specific [[MIME#Content-Transfer-Encoding|MIME content transfer encoding]].
相关的主题文章:
<ul>
 
  <li>[http://www.ladyzd.com/forum.php?mod=viewthread&tid=40128 http://www.ladyzd.com/forum.php?mod=viewthread&tid=40128]</li>
 
  <li>[http://azrebi.com/activity/p/15352/ http://azrebi.com/activity/p/15352/]</li>
 
  <li>[http://tangcq.com/forum/forum.php?mod=viewthread&tid=9470 http://tangcq.com/forum/forum.php?mod=viewthread&tid=9470]</li>
 
</ul>


== h14sgT Jordan 6 World Cup Brazil fsUvm40N ==
Base64 encoding schemes are commonly used when there is a need to encode binary data that needs to be stored and transferred over media that is designed to deal with textual data. This is to ensure that the data remains intact without modification during transport. Base64 is commonly used in a number of applications including [[email]] via [[MIME]], and storing complex data in [[XML]].


Shauna Jacobson and her husband, retired Detective Malcolm "Kurt" Jacobson. According to the report, prepared by Highway Patrol Trooper Michael Campos, Kurt Jacobson headed out to Lockhart to join a benefit poker run on his bike shortly before noon and made two stops before picking up Shauna at their Dripping Springs home shortly before 3pm. <br><br>Got here six weeks ago, just found out about this today. Returning April 10, so really don have time to order by mail. Things there have changed, not always for the better. In many ways it not as German as it once was, it less distinct. "I know you think things are bad, but they can get better," Briggs said. About 1,500 people have plunged from the bridge, making it one of the world s favorite suicide spots. <br><br>Interactions are particularly difficult with other children because they are less supportive. It is immensely important to provide children with SLI with the additional supports they need.. It's by design. If you encourage it, you end up with a population that is weak and afraid and even if 70% want something very badly, you can just say to them, "No. <br><br>The first thing I did when the cop wrote the ticket was demand [http://www.srmcolleges.in/indexss.asp??p=4471-outlet-jordan-7-gs-ntrl-gry-2014.html outlet jordan 7 gs ntrl gry 2014] a 'change of venue', which generally makes them drive out of their way. The officer in my case actually didn't know what the county seat was, and was not familiar with 40502(b), so I told him to call his watch commander, who [http://www.srmcolleges.in/indexss.asp??p=30403-When-Do-Champagne-6-Release.html When Do Champagne 6 Release] would explain it to him. <br><br>35% negative urine samples during weeks 1 24 for Probuphine and Suboxone, respectively). This data has been both published and presented for peer review. Technically, anything photographed by that camera [http://www.srmcolleges.in/indexss.asp??p=9613-cheap-bordeaux-7s-men.html cheap bordeaux 7s men] cannot be used as evidence in a trial. So, it a $20,000 paper weight.
{{toc limit|2}}
相关的主题文章:
 
<ul>
==Design==
 
The particular choice of [[character set]] selected for the 64 characters required for the base varies between implementations. The general rule is to choose a set of 64 characters that is both part of a subset common to most encodings, and also [[Printable character|printable]]. This combination leaves the data unlikely to be modified in transit through information systems, such as email, that were traditionally not [[8-bit clean]].<ref name="autogenerated2006">{{cite IETF |title= The Base16,Base32,and Base64 Data Encodings |rfc= 4648  |year= 2006 |month= October |publisher=[[Internet Engineering Task Force|IETF]] |accessdate= March 18, 2010}}</ref> For example, MIME's Base64 implementation uses <code>A</code>–<code>Z</code>, <code>a</code>–<code>z</code>, and <code>0</code>–<code>9</code> for the first 62 values. Other variations, usually derived from Base64, share this property but differ in the symbols chosen for the last two values; an example is [[UTF-7]].
  <li>[http://national-day-of.com/User:Bshokwmsvu#jwUmi4_World_Cup_Brazil_6s_0SnIYKxz http://national-day-of.com/User:Bshokwmsvu#jwUmi4_World_Cup_Brazil_6s_0SnIYKxz]</li>
 
 
The earliest instances of this type of encoding were created for dialup communication between systems running the same [[operating system|OS]] — e.g. [[Uuencoding|uuencode]] for [[UNIX]], [[BinHex]] for the [[TRS-80]] (later adapted for the [[Macintosh]]) — and could therefore make more assumptions about what characters were safe to use.  For instance, uuencode uses uppercase letters, digits, and many punctuation characters, but no lowercase, since UNIX was sometimes used with [[computer terminal|terminals]] that did not support distinct [[letter case]].<ref>{{cite IETF |title= Privacy Enhancement for InternetElectronic Mail: Part I: Message Encryption and Authentication Procedures |rfc= 1421  |year= 1993 |month= February |publisher=[[Internet Engineering Task Force|IETF]] |accessdate= March 18, 2010}}</ref><ref>{{cite IETF |title= Multipurpose Internet Mail Extensions: (MIME) Part One: Format of Internet Message Bodies |rfc= 2045  |year= 1996 |month= November |publisher=[[Internet Engineering Task Force|IETF]] |accessdate= March 18, 2010}}</ref><ref>{{cite IETF |title= The Base16, Base32, and Base64 Data Encodings | rfc= 3548  |year= 2003 |month= July |publisher=[[Internet Engineering Task Force|IETF]] |accessdate= March 18, 2010}}</ref><ref name="autogenerated2006"/>
  <li>[http://forums.gardenweb.com/forums/cacti/nph-ind.cgi http://forums.gardenweb.com/forums/cacti/nph-ind.cgi]</li>
 
 
==Examples==
  <li>[http://www.winedin.com/mobile/wine/pairing/pair_food_wine.php?food=register.cgi http://www.winedin.com/mobile/wine/pairing/pair_food_wine.php?food=register.cgi]</li>
A quote from [[Thomas Hobbes]]' ''[[Leviathan (book)|Leviathan]]'':
 
 
</ul>
<code>
: Man is distinguished, not only by his reason, but by this singular passion from
: other animals, which is a lust of the mind, that by a perseverance of delight
: in the continued and indefatigable generation of knowledge, exceeds the short
: vehemence of any carnal pleasure.
</code>
 
is represented as a byte sequence of 8-bit-padded [[ASCII]] characters encoded in MIME's Base64 scheme as follows:
 
<code>
: TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
: IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
: dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
: dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
: ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=
</code>
 
In the above quote, the encoded value of ''Man'' is ''TWFu''. Encoded in ASCII, the characters ''M'', ''a'', and ''n'' are stored as the bytes <code>77</code>, <code>97</code>, and <code>110</code>, which are the 8-bit binary values <code>01001101</code>, <code>01100001</code>, and <code>01101110</code>. These three values are joined together into a 24-bit string, producing <code>010011010110000101101110</code>. Groups of 6 bits (6 bits have a maximum of 2<sup>6</sup>&nbsp;=&nbsp;64 different binary values) are [[Binary_numeral_system#Counting_in_binary|converted into individual numbers]] from left to right (in this case, there are four numbers in a 24-bit string), which are then converted into their corresponding Base64 character values.
 
{|class="wikitable"
|-
!scope="row"| Text content
| colspan="8" style="text-align:center;"| '''M'''
| colspan="8" style="text-align:center;"| '''a'''
| colspan="8" style="text-align:center;"| '''n'''
|-
!scope="row"| ASCII
| colspan="8" style="text-align:center;"| 77 (0x4d)
| colspan="8" style="text-align:center;"| 97 (0x61)
| colspan="8" style="text-align:center;"| 110 (0x6e)
|-
!scope="row"| Bit pattern
|0||1||0||0||1||1||0||1||0||1||1||0||0||0||0||1||0||1||1||0||1||1||1||0
|-
!scope="row"| Index
| colspan="6" style="text-align:center;"| 19
| colspan="6" style="text-align:center;"| 22
| colspan="6" style="text-align:center;"| 5
| colspan="6" style="text-align:center;"| 46
|-
!scope="row"| Base64-encoded
| colspan="6" style="text-align:center;"| '''T'''
| colspan="6" style="text-align:center;"| '''W'''
| colspan="6" style="text-align:center;"| '''F'''
| colspan="6" style="text-align:center;"| '''u'''
|}
 
As this example illustrates, Base64 encoding converts three [[Octet (computing)|octets]] into four encoded characters.
 
<span id="Base64table">The Base64 index table</span>:
 
{|class="wikitable" style="text-align:center"
|-
!scope="col"| Value !!scope="col"| Char
|rowspan="17"| &nbsp;
!scope="col"| Value !!scope="col"| Char
|rowspan="17"| &nbsp;
!scope="col"| Value !!scope="col"| Char
|rowspan="17"| &nbsp;
!scope="col"| Value !!scope="col"| Char
|-
|  0 || <code>A</code> || 16 || <code>Q</code> || 32 || <code>g</code> || 48 || <code>w</code>
|-
|  1 || <code>B</code> || 17 || <code>R</code> || 33 || <code>h</code> || 49 || <code>x</code>
|-
|  2 || <code>C</code> || 18 || <code>S</code> || 34 || <code>i</code> || 50 || <code>y</code>
|-
|  3 || <code>D</code> || 19 || <code>T</code> || 35 || <code>j</code> || 51 || <code>z</code>
|-
|  4 || <code>E</code> || 20 || <code>U</code> || 36 || <code>k</code> || 52 || <code>0</code>
|-
|  5 || <code>F</code> || 21 || <code>V</code> || 37 || <code>l</code> || 53 || <code>1</code>
|-
|  6 || <code>G</code> || 22 || <code>W</code> || 38 || <code>m</code> || 54 || <code>2</code>
|-
|  7 || <code>H</code> || 23 || <code>X</code> || 39 || <code>n</code> || 55 || <code>3</code>
|-
|  8 || <code>I</code> || 24 || <code>Y</code> || 40 || <code>o</code> || 56 || <code>4</code>
|-
|  9 || <code>J</code> || 25 || <code>Z</code> || 41 || <code>p</code> || 57 || <code>5</code>
|-
| 10 || <code>K</code> || 26 || <code>a</code> || 42 || <code>q</code> || 58 || <code>6</code>
|-
| 11 || <code>L</code> || 27 || <code>b</code> || 43 || <code>r</code> || 59 || <code>7</code>
|-
| 12 || <code>M</code> || 28 || <code>c</code> || 44 || <code>s</code> || 60 || <code>8</code>
|-
| 13 || <code>N</code> || 29 || <code>d</code> || 45 || <code>t</code> || 61 || <code>9</code>
|-
| 14 || <code>O</code> || 30 || <code>e</code> || 46 || <code>u</code> || 62 || <code>+</code>
|-
| 15 || <code>P</code> || 31 || <code>f</code> || 47 || <code>v</code> || 63 || <code>/</code>
|}
 
When the number of bytes to encode is not divisible by three (that is, if there are only one or two bytes of input for the last 24-bit block), then the following action is performed:
Add extra bytes with value zero so there are three bytes, and perform the conversion to base64. If there was only one significant input byte, only the first two base64 digits are picked (12 bits), and if there were two significant input bytes, the first three base64 digits are picked (18 bits). '<code>=</code>' characters might be added to make the last block contain four base64 characters.
 
As a result:
When the last group contains one octet, the four [[least significant bit]]s of the final 6-bit block are set to zero; and when the last group contains two octets, the two least significant bits of the final 6-bit block are set to zero.
 
===Padding===
The '<code>==</code>' sequence indicates that the last group contained only one byte, and '<code>=</code>' indicates that it contained two bytes. The example below illustrates how truncating the input of the whole of the above quote changes the output padding:
<!-- This is the encoding of **THE WHOLE** of the above passage and the ending fits in with both the above encoding and the first line of the following example. Verified using http://www.motobit.com/util/base64-decoder-encoder.asp
In the previous version the example started with a space, which was not visible and thus quite misleading. -->
 
Input ends with: ''any carnal plea'''sure.'''''  Output ends with: YW55IGNhcm5hbCBwbGVh'''c3VyZS4='''
Input ends with: ''any carnal plea'''sure'''''  Output ends with: YW55IGNhcm5hbCBwbGVh'''c3VyZQ=='''
Input ends with: ''any carnal plea'''sur'''''    Output ends with: YW55IGNhcm5hbCBwbGVh'''c3Vy'''
Input ends with: ''any carnal plea'''su'''''    Output ends with: YW55IGNhcm5hbCBwbGVh'''c3U='''
Input ends with: ''any carnal plea'''s'''''      Output ends with: YW55IGNhcm5hbCBwbGVh'''cw=='''
 
The same characters will be encoded differently depending on their position within the three-octet group which is encoded to produce the four characters. For example:
 
The input: ''plea'''sure.'''''  Encodes to: cGxlY'''XN1cmUu'''
The input: ''lea'''sure.'''''    Encodes to: bGVh'''c3VyZS4='''
The input: ''ea'''sure.'''''    Encodes to: ZWF'''zdXJlLg=='''
The input: ''a'''sure.'''''      Encodes to:    Y'''XN1cmUu'''
The input: '''''sure.'''''      Encodes to:    '''c3VyZS4='''
 
The number of output bytes per input byte is <math>\tfrac{4}{3}</math> (33% overhead), up to rounding. Specifically, given an input of ''n'' bytes, the output will be <math>4 \lceil n/3 \rceil</math> bytes long, including padding characters.
 
In theory, the padding character is not needed for decoding, since the number of missing bytes can be calculated from the number of Base64 digits. In some implementations, the padding character is mandatory, while for others it is not used.  One case in which padding characters are required is concatenating multiple Base64 encoded files.
 
====Decoding Base64 with padding====
 
When decoding Base64 text, four characters are typically converted back to three bytes.  The only exceptions are when padding characters exist.  A single '<code>=</code>' indicates that the four characters will decode to only two bytes, while '<code>==</code>' indicates that the four characters will decode to only a single byte.  For example:
 
Encoded text ends with: YW55IGNhcm5hbCBwbGVh'''cw=='''  Block with two '='s decodes to one character:  ''any carnal plea'''s'''''
Encoded text ends with: YW55IGNhcm5hbCBwbGVh'''c3U='''  Block with one '=' decodes to two characters:  ''any carnal plea'''su'''''
Encoded text ends with: YW55IGNhcm5hbCBwbGVh'''c3Vy'''  Block with no '='s decodes to three characters: ''any carnal plea'''sur'''''
 
==Implementations and history==
===Variants summary table===
Implementations may have some constraints on the alphabet used for representing some bit patterns. This notably concerns the last two characters used in the index table for index 62 and 63, and the character used for padding (which may be mandatory in some protocols, or removed in others). The table below summarizes these known variants, and link to the subsections below. 
{|class="wikitable" style="text-align:center"
|-
! Variant !! Char for index 62 !! Char for index 63 !! ''pad'' char !! Fixed encoded line-length !! Maximum encoded line length !! Line separators !! Characters outside alphabet !! Line checksum
|-
! Original Base64 for [[#Privacy-enhanced mail|Privacy-Enhanced Mail (PEM)]] (<nowiki>RFC 1421</nowiki>, deprecated)
| <code>+</code> || <code>/</code> || <code>=</code> ''(mandatory)'' || Yes (except last line) || 64 || CR+LF || Forbidden || ''(none)''
|-
! Base64 transfer encoding for [[#MIME|MIME]] (<nowiki>RFC 2045</nowiki>)
| <code>+</code> || <code>/</code> || <code>=</code> ''(mandatory)'' || No (variable) || 76 || CR+LF || Accepted (discarded) || ''(none)''
|-
! Standard 'Base64' encoding for [[#RFC 3548|RFC 3548]] or [[#RFC 4648|RFC 4648]]
| <code>+</code> || <code>/</code> || <code>=</code> ''(mandatory)'' || Yes (except last line) || 64 or 76 ''(only if line separators are specified and needed)'' || CR+LF ''(only if specified and needed)'' || Forbidden || ''(none)''
|-
! 'Radix-64' encoding for [[#OpenPGP|OpenPGP]]  (<nowiki>RFC 4880</nowiki>)
| <code>+</code> || <code>/</code> || <code>=</code> ''(mandatory)'' || No (variable) || 76 || CR+LF || Forbidden || 24-bit CRC (Radix-64-encoded, including one ''pad'' character)
|-
! Modified Base64 encoding for [[#UTF-7|UTF-7]] (<nowiki>RFC 1642</nowiki>, obsoleted)
| <code>+</code> || <code>/</code> || ''(none)'' || No (variable) || ''(none)'' || ''(none)'' || Forbidden || ''(none)''
|-
! Modified Base64 for [[#Filenames|filenames]] (non standard)
| <code>+</code> || <code>-</code> || ''(none)'' || No (variable) || ''(filesystem limit, generally 255)'' || ''(none)'' || Forbidden || ''(none)''
|-
! Base64 with [[#URL applications|URL]] and [[#Filenames|Filename]] Safe Alphabet ([[#RFC 4648|RFC 4648]] 'base64url' encoding)
| <code>-</code> || <code>_</code> || ''(optional, not recommended, if present must be [[Percent-encoding|URL encoded]] as ''<code>%3D</code>'')'' || No (variable) || ''(application-dependent)'' || ''(none)'' || Forbidden || ''(none)''
|-
! Non-standard [[#URL applications|URL]]-safe Modification of Base64 used in [[YUI Library]] (Y64)<ref>{{cite web|url=http://www.yuiblog.com/blog/2010/07/06/in-the-yui-3-gallery-base64-and-y64-encoding/ |title=YUIBlog |publisher=YUIBlog |date= |accessdate=2012-06-21}}</ref>
| <code>.</code> || <code>_</code> || <code>-</code> || No (variable) || ''(application-dependent)'' || ''(none)'' || Forbidden || ''(none)''
|-
!  Modified Base64 for [[#XML|XML]] name tokens (''Nmtoken'')
| <code>.</code> || <code>-</code> || ''(none)'' || No (variable) || ''(XML parser-dependent)'' || ''(none)'' || Forbidden || ''(none)''
|-
!  Modified Base64 for [[#XML|XML]] identifiers (''Name'')
| <code>_</code> || <code>:</code> || ''(none)'' || No (variable) || ''(XML parser-dependent)'' || ''(none)'' || Forbidden || ''(none)''
|-
!  Modified Base64 for [[#Program identifiers|Program identifiers]] (variant 1, non standard)
| <code>_</code> || <code>-</code> || ''(none)'' || No (variable) || ''(language/system-dependent)'' || ''(none)'' || Forbidden || ''(none)''
|-
!  Modified Base64 for [[#Program identifiers|Program identifiers]] (variant 2, non standard)
| <code>.</code> || <code>_</code> || ''(none)'' || No (variable) || ''(language/system-dependent)'' || ''(none)'' || Forbidden || ''(none)''
|-
!  Modified Base64 for [[#Regular expressions|Regular expressions]] (non standard)
| <code>!</code> || <code>-</code> || ''(none)'' || No (variable) || ''(application-dependent)'' || ''(none)'' || Forbidden || ''(none)''
|}
 
===Privacy-enhanced mail===
The first known standardized use of the encoding now called MIME Base64 was in the [[Privacy-enhanced Electronic Mail]] (PEM) protocol, proposed by RFC 989 in 1987.  PEM defines a "printable encoding" scheme that uses Base64 encoding to transform an arbitrary sequence of [[octet (computing)|octets]] to a format that can be expressed in short lines of 6-bit characters, as required by transfer protocols such as [[SMTP]].<ref>{{cite IETF |title=Privacy Enhancement for Internet Electronic Mail |rfc=989 |year=1987 |month=February |publisher=[[Internet Engineering Task Force|IETF]] |accessdate=March 18, 2010}}</ref>
 
The current version of PEM (specified in RFC 1421) uses a 64-character alphabet consisting of upper- and lower-case [[Roman letters]] (<code>A</code>–<code>Z</code>, <code>a</code>–<code>z</code>), the numerals (<code>0</code>–<code>9</code>), and the "<code>+</code>" and "<code>/</code>" symbols. The "<code>=</code>" symbol is also used as a special suffix code.<ref>{{cite IETF |title=Privacy Enhancement for Internet Electronic Mail: Part I: Message Encryption and Authentication Procedures |rfc=1421 |year=1993 |month=February |publisher=[[Internet Engineering Task Force|IETF]] |accessdate=March 18, 2010}}</ref> The original specification, RFC 989, additionally used the "<code>*</code>" symbol to delimit encoded but unencrypted data within the output stream.
 
To convert data to PEM printable encoding, the first byte is placed in the [[Most significant bit|most significant]] eight bits of a 24-bit [[data buffer|buffer]], the next in the middle eight, and the third in the [[Least significant bit|least significant]] eight bits.  If there are fewer than three bytes left to encode (or in total), the remaining buffer bits will be zero. The buffer is then used, six bits at a time, most significant first, as indices into the string: "<code>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/</code>", and the indicated character is output.
 
The process is repeated on the remaining data until fewer than four octets remain. If three octets remain, they are processed normally. If fewer than three octets (24 bits) are remaining to encode, the input data is right-padded with zero bits to form an integral multiple of six bits.
 
After encoding the non-padded data, if two octets of the 24-bit buffer are padded-zeros, two "<code>=</code>" characters are appended to the output; if one octet of the 24-bit buffer is filled with padded-zeros, one "<code>=</code>" character is appended. This signals the decoder that the zero bits added due to padding should be excluded from the reconstructed data.  This also guarantees that the encoded output length is a multiple of 4 bytes.
 
PEM requires that all encoded lines consist of exactly 64 printable characters, with the exception of the last line, which may contain fewer printable characters.  Lines are delimited by whitespace characters according to local (platform-specific) conventions.
 
===MIME===
{{main|MIME}}
The [[MIME]] (Multipurpose Internet Mail Extensions) specification lists Base64 as one of two [[binary-to-text encoding]] schemes (the other being [[quoted-printable]]).<ref>{{cite IETF |title=Multipurpose Internet Mail Extensions: (MIME) Part One: Format of Internet Message Bodies |rfc=2045 |year=1996 |month=November |publisher=[[Internet Engineering Task Force|IETF]] |accessdate=March 18, 2010}}</ref> MIME's Base64 encoding is based on that of the RFC 1421 version of PEM: it uses the same 64-character alphabet and encoding mechanism as PEM, and uses the "<code>=</code>" symbol for output padding in the same way, as described at RFC 1521.
 
MIME does not specify a fixed length for Base64-encoded lines, but it does specify a maximum line length of 76 characters.  Additionally it specifies that any extra-alphabetic characters must be ignored by a compliant decoder, although most implementations use a CR/LF [[newline]] pair to delimit encoded lines.
 
Thus, the actual length of MIME-compliant Base64-encoded binary data is usually about 137% of the original data length, though for very short messages the overhead can be much higher due to the overhead of the headers. Very roughly, the final size of Base64-encoded binary data is equal to 1.37 times the original data size + 814 bytes (for headers). The size of the decoded data can be approximated with this formula:
bytes = (string_length(encoded_string) - 814) / 1.37
 
===UTF-7===
{{main|UTF-7}}
[[UTF-7]], described first in RFC 1642, which was later superseded by RFC 2152, introduced a system called ''modified Base64''. This data encoding scheme is used to encode [[UTF-16]] as [[ASCII]] characters for use in 7-bit transports such as [[SMTP]].  It is a variant of the Base64 encoding used in MIME.<ref>{{cite IETF |title=UTF-7 A Mail-Safe Transformation Format of Unicode |rfc=1642 |year=1994 |month=July |publisher=[[Internet Engineering Task Force|IETF]] |accessdate=March 18, 2010}}</ref><ref>{{cite IETF |title=UTF-7 A Mail-Safe Transformation Format of Unicode |rfc=2152 |year=1997 |month=May |publisher=[[Internet Engineering Task Force|IETF]] |accessdate=March 18, 2010}}</ref>
 
The "Modified Base64" alphabet consists of the MIME Base64 alphabet, but does not use the "<code>=</code>" padding character.  UTF-7 is intended for use in mail headers (defined in RFC 2047), and the "<code>=</code>" character is reserved in that context as the escape character for "quoted-printable" encoding. Modified Base64 simply omits the padding and ends immediately after the last Base64 digit containing useful bits leaving up to three unused bits in the last Base64 digit.
 
===OpenPGP===
{{main|OpenPGP}}
[[OpenPGP]], described in RFC 4880, describes '''Radix-64''' encoding, also known as "ASCII Armor".  Radix-64 is identical to the "Base64" encoding described from MIME, with the addition of an optional 24-bit [[cyclic redundancy check|CRC]]. The [[checksum]] is calculated on the input data before encoding; the checksum is then encoded with the same Base64 algorithm and, using an additional "<code>=</code>" symbol as separator, appended to the encoded output data.<ref>{{cite IETF |title=OpenPGP Message Format |rfc=4880 |year=2007 |month=November |publisher=[[Internet Engineering Task Force|IETF]] |accessdate=March 18, 2010}}</ref>
 
===RFC 3548===
RFC 3548, entitled ''The Base16, Base32, and Base64 Data Encodings'', is an informational (non-normative) memo that attempts to unify the RFC 1421 and RFC 2045 specifications of Base64 encodings, alternative-alphabet encodings, and the seldom-used Base32 and Base16 encodings.
 
RFC 3548 forbids implementations from generating messages containing characters outside the encoding alphabet or without padding, unless they are written to a specification that refers to RFC 3548 and specifically requires otherwise; it also declares that decoder implementations must reject data that contain characters outside the encoding alphabet, unless they are written to a specification that refers to RFC 3548 and specifically requires otherwise.<ref>{{cite IETF |title=The Base16, Base32, and Base64 Data Encodings |rfc=3548 |year=2003 |month=July |publisher=[[Internet Engineering Task Force|IETF]] |accessdate=March 18, 2010}}</ref>
 
===RFC 4648===
This RFC obsoletes RFC 3548 and focuses on Base64/32/16:
: ''This document describes the commonly used Base64, Base32, and Base16 encoding schemes.  It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings.''
 
===Filenames===
Another variant called '''modified Base64 for filename''' uses '<code>-</code>' instead of '<code>/</code>', because Unix and Windows filenames cannot contain '<code>/</code>'.
 
It could be recommended to use the ''modified Base64 for URL'' instead, since then the filenames could be used in URLs also.
 
===URL applications===
Base64 encoding can be helpful when fairly lengthy identifying information is used in an HTTP environment. For example, a database persistence framework for [[Java (programming language)|Java]] objects might use  Base64 encoding to encode a relatively large unique id (generally 128-bit [[UUID]]s) into a string for use as an HTTP parameter in HTTP forms or HTTP GET [[Uniform Resource Locator|URLs]]. Also, many applications need to encode binary data in a way that is convenient for inclusion in URLs, including in hidden web form fields, and Base64 is a convenient encoding to render them in a compact way.
 
Using standard Base64 in [[URL]] requires encoding of '<code>+</code>', '<code>/</code>' and '<code>=</code>' characters into special [[Percent-encoding|percent-encoded]] hexadecimal sequences ('<code>+</code>' = '<code>%2B</code>', '<code>/</code>' = '<code>%2F</code>' and '<code>=</code>' = '<code>%3D</code>'), which makes the string unnecessarily longer.
 
For this reason, '''modified Base64 for URL''' variants exist, where the '<code>+</code>' and '<code>/</code>' characters of standard Base64 are respectively replaced by '<code>-</code>' and '<code>_</code>', so that using [[Percent-encoding|URL encoders/decoders]] are no longer necessary and have no impact on the length of the encoded value, leaving the same encoded form intact for use in relational databases, web forms, and object identifiers in general.  Some variants allow or require omitting the padding '<code>=</code>' signs to avoid them being confused with field separators, or require that any such padding be percent-encoded. Some libraries (like <code>org.bouncycastle.util.encoders.UrlBase64Encoder</code>) will encode '<code>=</code>' to '<code>.</code>'.
 
===Program identifiers===
There are other variants that use '<code>_-</code>' or '<code>._</code>' when the Base64 variant string must be used within valid identifiers for programs.
 
===XML===
[[XML]] identifiers and name tokens are encoded using two variants:
* '<code>.-</code>' for use in [[XML]] name tokens (''Nmtoken''), or even
* '<code>_:</code>' for use in more restricted XML identifiers (''Name'').
 
===HTML===
The <tt>atob()</tt> and <tt>btoa()</tt> JavaScript methods, defined in the HTML5 draft specification,<ref>[http://dev.w3.org/html5/spec/Overview.html#atob Base64 utility methods], HTML5 Editor's Draft, section 6.2, introduced by [http://html5.org/tools/web-apps-tracker?from=5813&to=5814 changeset 5814], 2011-02-01</ref> provide Base64 encoding and decoding functionality to web pages. The <tt>atob()</tt> method is unusual in that it does not ignore whitespace or new lines, throwing an <tt>INVALID_CHARACTER_ERR</tt> instead. The <tt>btoa()</tt> method outputs padding characters, but these are optional in the input of the <tt>atob()</tt> method.
 
===Other applications===
Base64 can be used in a variety of contexts:
* Base64 can be used to transmit and store text that might otherwise cause [[delimiter collision]]
* [[Spam (electronic)|Spammers]] use Base64 to evade basic [[Anti-spam techniques (e-mail)|anti-spamming]] tools, which often do not decode Base64 and therefore cannot detect keywords in encoded messages.
* Base64 is used for [[PHP]] [[Obfuscated code|obfuscation]].
* Base64 is used to encode character strings in [[LDIF]] files
* Base64 is often used to embed binary data in an [[XML]] file, using a syntax similar to <code><nowiki><data encoding="base64">…</data></nowiki></code> e.g. [[favicon]]s in [[Firefox]]'s <tt>bookmarks.html</tt>.
* Base64 is used to encode binary files such as images within scripts, to avoid depending on external files.
* The [[data URI scheme]] can use Base64 to represent file contents. For instance, background images and fonts can be specified in a [[Cascading Style Sheets|CSS]] stylesheet file as <code>data:</code> URIs, instead of being supplied in separate files.
* The FreeSWAN ipsec implementation precedes Base64 strings with <tt>0s</tt>, so they can be distinguished from text or hexadecimal strings.
 
===Radix 64 applications not compatible with Base64===
* A base 64 encoding is used to store password hashes computed with [[Crypt (3)#Library Function|crypt]] in the <tt>[[passwd (file)|/etc/passwd]]</tt>. Its alphabet starts with '.' for zero, then '/' for one, followed by 0-9, A-Z and a-z. Padding is not used.
* The [[GEDCOM]] 5.5 standard for Genealogical data interchange uses a concept similar to Base64 to encode multimedia files in its text-line hierarchical file format. The choice of extra characters are '<code>.</code>' and '<code>/</code>' with a different assignment of characters for the 64 6-bit values, that is <code>.</code>, <code>/</code>, <code>0</code>–<code>9</code>, <code>A</code>–<code>Z</code>, <code>a</code>–<code>z</code> for values 0–63.<ref>{{cite web|url=http://homepages.rootsweb.ancestry.com/~pmcbride/gedcom/55gctoc.htm |title=The GEDCOM Standard Release 5.5 |publisher=Homepages.rootsweb.ancestry.com |date= |accessdate=2012-06-21}}</ref>
* [[Uuencoding]] uses a system with base 64 for binary data, but with a very different set of characters in the encoding. It uses many punctuation characters but no lower-case letters.
* [[BinHex]], which was used within the [[Mac OS]], has an encoding system with 64 as a base but with different characters from Base64. It uses punctuation characters, digits, upper and lower case letters but does not use some visually confusable characters like '<code>7</code>', '<code>O</code>', '<code>g</code>' and '<code>o</code>'.
* 6PACK, used with some [[terminal node controller]]s, encodes 3 raw octets into 4 characters, but with a different set of 64 characters.<ref>
{{cite web|url=http://private.freepage.de/cgi-bin/feets/freepage_ext/41030x030A/rewrite/alexs/xfr/flexnet/6pack_en/6pack.htm|title=6PACK  a "real time" PC to TNC protocol|accessdate=2013-05-19}}</ref>
 
==See also==
* [[Ascii85]] encoding scheme
* [[Base32]] encoding scheme
* [[8BITMIME]]
* [[Uniform Resource Locator|URL]]
* [[Binary-to-text encoding]] for a comparison of various encoding algorithms
* [[Binary number]]
 
==References==
{{reflist|2}}
 
==External links==
<!-- Please do NOT add any more base 64 encoders or decoders.  There are plenty of examples already.
    See [[WP:EL]] (http://en.wikipedia.org/wiki/Wikipedia:EL) for an explanation of why external links are routinely vigorously eliminated from articles.
-->
{{Wikibooks|Algorithm implementation|Miscellaneous/Base64|Base64}}
 
[[Category:Usenet]]
[[Category:Email]]
[[Category:Internet Standards]]
[[Category:Binary-to-text encoding formats]]
[[Category:Data serialization formats]]

Revision as of 02:32, 24 January 2014

29 yr old Orthopaedic Surgeon Grippo from Saint-Paul, spends time with interests including model railways, top property developers in singapore developers in singapore and dolls. Finished a cruise ship experience that included passing by Runic Stones and Church. Template:Tooshort Template:Condense

Base64 is a group of similar binary-to-text encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 representation. The term Base64 originates from a specific MIME content transfer encoding.

Base64 encoding schemes are commonly used when there is a need to encode binary data that needs to be stored and transferred over media that is designed to deal with textual data. This is to ensure that the data remains intact without modification during transport. Base64 is commonly used in a number of applications including email via MIME, and storing complex data in XML.

Template:Toc limit

Design

The particular choice of character set selected for the 64 characters required for the base varies between implementations. The general rule is to choose a set of 64 characters that is both part of a subset common to most encodings, and also printable. This combination leaves the data unlikely to be modified in transit through information systems, such as email, that were traditionally not 8-bit clean.[1] For example, MIME's Base64 implementation uses AZ, az, and 09 for the first 62 values. Other variations, usually derived from Base64, share this property but differ in the symbols chosen for the last two values; an example is UTF-7.

The earliest instances of this type of encoding were created for dialup communication between systems running the same OS — e.g. uuencode for UNIX, BinHex for the TRS-80 (later adapted for the Macintosh) — and could therefore make more assumptions about what characters were safe to use. For instance, uuencode uses uppercase letters, digits, and many punctuation characters, but no lowercase, since UNIX was sometimes used with terminals that did not support distinct letter case.[2][3][4][1]

Examples

A quote from Thomas Hobbes' Leviathan:

Man is distinguished, not only by his reason, but by this singular passion from
other animals, which is a lust of the mind, that by a perseverance of delight
in the continued and indefatigable generation of knowledge, exceeds the short
vehemence of any carnal pleasure.

is represented as a byte sequence of 8-bit-padded ASCII characters encoded in MIME's Base64 scheme as follows:

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=

In the above quote, the encoded value of Man is TWFu. Encoded in ASCII, the characters M, a, and n are stored as the bytes 77, 97, and 110, which are the 8-bit binary values 01001101, 01100001, and 01101110. These three values are joined together into a 24-bit string, producing 010011010110000101101110. Groups of 6 bits (6 bits have a maximum of 26 = 64 different binary values) are converted into individual numbers from left to right (in this case, there are four numbers in a 24-bit string), which are then converted into their corresponding Base64 character values.

Text content M a n
ASCII 77 (0x4d) 97 (0x61) 110 (0x6e)
Bit pattern 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0
Index 19 22 5 46
Base64-encoded T W F u

As this example illustrates, Base64 encoding converts three octets into four encoded characters.

The Base64 index table:

Value Char   Value Char   Value Char   Value Char
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

When the number of bytes to encode is not divisible by three (that is, if there are only one or two bytes of input for the last 24-bit block), then the following action is performed: Add extra bytes with value zero so there are three bytes, and perform the conversion to base64. If there was only one significant input byte, only the first two base64 digits are picked (12 bits), and if there were two significant input bytes, the first three base64 digits are picked (18 bits). '=' characters might be added to make the last block contain four base64 characters.

As a result: When the last group contains one octet, the four least significant bits of the final 6-bit block are set to zero; and when the last group contains two octets, the two least significant bits of the final 6-bit block are set to zero.

Padding

The '==' sequence indicates that the last group contained only one byte, and '=' indicates that it contained two bytes. The example below illustrates how truncating the input of the whole of the above quote changes the output padding:

Input ends with: any carnal pleasure.  Output ends with: YW55IGNhcm5hbCBwbGVhc3VyZS4=
Input ends with: any carnal pleasure   Output ends with: YW55IGNhcm5hbCBwbGVhc3VyZQ==
Input ends with: any carnal pleasur    Output ends with: YW55IGNhcm5hbCBwbGVhc3Vy
Input ends with: any carnal pleasu     Output ends with: YW55IGNhcm5hbCBwbGVhc3U=
Input ends with: any carnal pleas      Output ends with: YW55IGNhcm5hbCBwbGVhcw==

The same characters will be encoded differently depending on their position within the three-octet group which is encoded to produce the four characters. For example:

The input: pleasure.   Encodes to: cGxlYXN1cmUu
The input: leasure.    Encodes to: bGVhc3VyZS4=
The input: easure.     Encodes to: ZWFzdXJlLg==
The input: asure.      Encodes to:     YXN1cmUu
The input: sure.       Encodes to:     c3VyZS4=

The number of output bytes per input byte is (33% overhead), up to rounding. Specifically, given an input of n bytes, the output will be bytes long, including padding characters.

In theory, the padding character is not needed for decoding, since the number of missing bytes can be calculated from the number of Base64 digits. In some implementations, the padding character is mandatory, while for others it is not used. One case in which padding characters are required is concatenating multiple Base64 encoded files.

Decoding Base64 with padding

When decoding Base64 text, four characters are typically converted back to three bytes. The only exceptions are when padding characters exist. A single '=' indicates that the four characters will decode to only two bytes, while '==' indicates that the four characters will decode to only a single byte. For example:

Encoded text ends with: YW55IGNhcm5hbCBwbGVhcw==   Block with two '='s decodes to one character:  any carnal pleas
Encoded text ends with: YW55IGNhcm5hbCBwbGVhc3U=   Block with one '=' decodes to two characters:  any carnal pleasu
Encoded text ends with: YW55IGNhcm5hbCBwbGVhc3Vy   Block with no '='s decodes to three characters: any carnal pleasur

Implementations and history

Variants summary table

Implementations may have some constraints on the alphabet used for representing some bit patterns. This notably concerns the last two characters used in the index table for index 62 and 63, and the character used for padding (which may be mandatory in some protocols, or removed in others). The table below summarizes these known variants, and link to the subsections below.

Variant Char for index 62 Char for index 63 pad char Fixed encoded line-length Maximum encoded line length Line separators Characters outside alphabet Line checksum
Original Base64 for Privacy-Enhanced Mail (PEM) (RFC 1421, deprecated) + / = (mandatory) Yes (except last line) 64 CR+LF Forbidden (none)
Base64 transfer encoding for MIME (RFC 2045) + / = (mandatory) No (variable) 76 CR+LF Accepted (discarded) (none)
Standard 'Base64' encoding for RFC 3548 or RFC 4648 + / = (mandatory) Yes (except last line) 64 or 76 (only if line separators are specified and needed) CR+LF (only if specified and needed) Forbidden (none)
'Radix-64' encoding for OpenPGP (RFC 4880) + / = (mandatory) No (variable) 76 CR+LF Forbidden 24-bit CRC (Radix-64-encoded, including one pad character)
Modified Base64 encoding for UTF-7 (RFC 1642, obsoleted) + / (none) No (variable) (none) (none) Forbidden (none)
Modified Base64 for filenames (non standard) + - (none) No (variable) (filesystem limit, generally 255) (none) Forbidden (none)
Base64 with URL and Filename Safe Alphabet (RFC 4648 'base64url' encoding) - _ (optional, not recommended, if present must be URL encoded as %3D) No (variable) (application-dependent) (none) Forbidden (none)
Non-standard URL-safe Modification of Base64 used in YUI Library (Y64)[5] . _ - No (variable) (application-dependent) (none) Forbidden (none)
Modified Base64 for XML name tokens (Nmtoken) . - (none) No (variable) (XML parser-dependent) (none) Forbidden (none)
Modified Base64 for XML identifiers (Name) _ : (none) No (variable) (XML parser-dependent) (none) Forbidden (none)
Modified Base64 for Program identifiers (variant 1, non standard) _ - (none) No (variable) (language/system-dependent) (none) Forbidden (none)
Modified Base64 for Program identifiers (variant 2, non standard) . _ (none) No (variable) (language/system-dependent) (none) Forbidden (none)
Modified Base64 for Regular expressions (non standard) ! - (none) No (variable) (application-dependent) (none) Forbidden (none)

Privacy-enhanced mail

The first known standardized use of the encoding now called MIME Base64 was in the Privacy-enhanced Electronic Mail (PEM) protocol, proposed by RFC 989 in 1987. PEM defines a "printable encoding" scheme that uses Base64 encoding to transform an arbitrary sequence of octets to a format that can be expressed in short lines of 6-bit characters, as required by transfer protocols such as SMTP.[6]

The current version of PEM (specified in RFC 1421) uses a 64-character alphabet consisting of upper- and lower-case Roman letters (AZ, az), the numerals (09), and the "+" and "/" symbols. The "=" symbol is also used as a special suffix code.[7] The original specification, RFC 989, additionally used the "*" symbol to delimit encoded but unencrypted data within the output stream.

To convert data to PEM printable encoding, the first byte is placed in the most significant eight bits of a 24-bit buffer, the next in the middle eight, and the third in the least significant eight bits. If there are fewer than three bytes left to encode (or in total), the remaining buffer bits will be zero. The buffer is then used, six bits at a time, most significant first, as indices into the string: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", and the indicated character is output.

The process is repeated on the remaining data until fewer than four octets remain. If three octets remain, they are processed normally. If fewer than three octets (24 bits) are remaining to encode, the input data is right-padded with zero bits to form an integral multiple of six bits.

After encoding the non-padded data, if two octets of the 24-bit buffer are padded-zeros, two "=" characters are appended to the output; if one octet of the 24-bit buffer is filled with padded-zeros, one "=" character is appended. This signals the decoder that the zero bits added due to padding should be excluded from the reconstructed data. This also guarantees that the encoded output length is a multiple of 4 bytes.

PEM requires that all encoded lines consist of exactly 64 printable characters, with the exception of the last line, which may contain fewer printable characters. Lines are delimited by whitespace characters according to local (platform-specific) conventions.

MIME

Mining Engineer (Excluding Oil ) Truman from Alma, loves to spend time knotting, largest property developers in singapore developers in singapore and stamp collecting. Recently had a family visit to Urnes Stave Church. The MIME (Multipurpose Internet Mail Extensions) specification lists Base64 as one of two binary-to-text encoding schemes (the other being quoted-printable).[8] MIME's Base64 encoding is based on that of the RFC 1421 version of PEM: it uses the same 64-character alphabet and encoding mechanism as PEM, and uses the "=" symbol for output padding in the same way, as described at RFC 1521.

MIME does not specify a fixed length for Base64-encoded lines, but it does specify a maximum line length of 76 characters. Additionally it specifies that any extra-alphabetic characters must be ignored by a compliant decoder, although most implementations use a CR/LF newline pair to delimit encoded lines.

Thus, the actual length of MIME-compliant Base64-encoded binary data is usually about 137% of the original data length, though for very short messages the overhead can be much higher due to the overhead of the headers. Very roughly, the final size of Base64-encoded binary data is equal to 1.37 times the original data size + 814 bytes (for headers). The size of the decoded data can be approximated with this formula:

bytes = (string_length(encoded_string) - 814) / 1.37

UTF-7

Mining Engineer (Excluding Oil ) Truman from Alma, loves to spend time knotting, largest property developers in singapore developers in singapore and stamp collecting. Recently had a family visit to Urnes Stave Church. UTF-7, described first in RFC 1642, which was later superseded by RFC 2152, introduced a system called modified Base64. This data encoding scheme is used to encode UTF-16 as ASCII characters for use in 7-bit transports such as SMTP. It is a variant of the Base64 encoding used in MIME.[9][10]

The "Modified Base64" alphabet consists of the MIME Base64 alphabet, but does not use the "=" padding character. UTF-7 is intended for use in mail headers (defined in RFC 2047), and the "=" character is reserved in that context as the escape character for "quoted-printable" encoding. Modified Base64 simply omits the padding and ends immediately after the last Base64 digit containing useful bits leaving up to three unused bits in the last Base64 digit.

OpenPGP

Mining Engineer (Excluding Oil ) Truman from Alma, loves to spend time knotting, largest property developers in singapore developers in singapore and stamp collecting. Recently had a family visit to Urnes Stave Church. OpenPGP, described in RFC 4880, describes Radix-64 encoding, also known as "ASCII Armor". Radix-64 is identical to the "Base64" encoding described from MIME, with the addition of an optional 24-bit CRC. The checksum is calculated on the input data before encoding; the checksum is then encoded with the same Base64 algorithm and, using an additional "=" symbol as separator, appended to the encoded output data.[11]

RFC 3548

RFC 3548, entitled The Base16, Base32, and Base64 Data Encodings, is an informational (non-normative) memo that attempts to unify the RFC 1421 and RFC 2045 specifications of Base64 encodings, alternative-alphabet encodings, and the seldom-used Base32 and Base16 encodings.

RFC 3548 forbids implementations from generating messages containing characters outside the encoding alphabet or without padding, unless they are written to a specification that refers to RFC 3548 and specifically requires otherwise; it also declares that decoder implementations must reject data that contain characters outside the encoding alphabet, unless they are written to a specification that refers to RFC 3548 and specifically requires otherwise.[12]

RFC 4648

This RFC obsoletes RFC 3548 and focuses on Base64/32/16:

This document describes the commonly used Base64, Base32, and Base16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings.

Filenames

Another variant called modified Base64 for filename uses '-' instead of '/', because Unix and Windows filenames cannot contain '/'.

It could be recommended to use the modified Base64 for URL instead, since then the filenames could be used in URLs also.

URL applications

Base64 encoding can be helpful when fairly lengthy identifying information is used in an HTTP environment. For example, a database persistence framework for Java objects might use Base64 encoding to encode a relatively large unique id (generally 128-bit UUIDs) into a string for use as an HTTP parameter in HTTP forms or HTTP GET URLs. Also, many applications need to encode binary data in a way that is convenient for inclusion in URLs, including in hidden web form fields, and Base64 is a convenient encoding to render them in a compact way.

Using standard Base64 in URL requires encoding of '+', '/' and '=' characters into special percent-encoded hexadecimal sequences ('+' = '%2B', '/' = '%2F' and '=' = '%3D'), which makes the string unnecessarily longer.

For this reason, modified Base64 for URL variants exist, where the '+' and '/' characters of standard Base64 are respectively replaced by '-' and '_', so that using URL encoders/decoders are no longer necessary and have no impact on the length of the encoded value, leaving the same encoded form intact for use in relational databases, web forms, and object identifiers in general. Some variants allow or require omitting the padding '=' signs to avoid them being confused with field separators, or require that any such padding be percent-encoded. Some libraries (like org.bouncycastle.util.encoders.UrlBase64Encoder) will encode '=' to '.'.

Program identifiers

There are other variants that use '_-' or '._' when the Base64 variant string must be used within valid identifiers for programs.

XML

XML identifiers and name tokens are encoded using two variants:

  • '.-' for use in XML name tokens (Nmtoken), or even
  • '_:' for use in more restricted XML identifiers (Name).

HTML

The atob() and btoa() JavaScript methods, defined in the HTML5 draft specification,[13] provide Base64 encoding and decoding functionality to web pages. The atob() method is unusual in that it does not ignore whitespace or new lines, throwing an INVALID_CHARACTER_ERR instead. The btoa() method outputs padding characters, but these are optional in the input of the atob() method.

Other applications

Base64 can be used in a variety of contexts:

  • Base64 can be used to transmit and store text that might otherwise cause delimiter collision
  • Spammers use Base64 to evade basic anti-spamming tools, which often do not decode Base64 and therefore cannot detect keywords in encoded messages.
  • Base64 is used for PHP obfuscation.
  • Base64 is used to encode character strings in LDIF files
  • Base64 is often used to embed binary data in an XML file, using a syntax similar to <data encoding="base64">…</data> e.g. favicons in Firefox's bookmarks.html.
  • Base64 is used to encode binary files such as images within scripts, to avoid depending on external files.
  • The data URI scheme can use Base64 to represent file contents. For instance, background images and fonts can be specified in a CSS stylesheet file as data: URIs, instead of being supplied in separate files.
  • The FreeSWAN ipsec implementation precedes Base64 strings with 0s, so they can be distinguished from text or hexadecimal strings.

Radix 64 applications not compatible with Base64

  • A base 64 encoding is used to store password hashes computed with crypt in the /etc/passwd. Its alphabet starts with '.' for zero, then '/' for one, followed by 0-9, A-Z and a-z. Padding is not used.
  • The GEDCOM 5.5 standard for Genealogical data interchange uses a concept similar to Base64 to encode multimedia files in its text-line hierarchical file format. The choice of extra characters are '.' and '/' with a different assignment of characters for the 64 6-bit values, that is ., /, 09, AZ, az for values 0–63.[14]
  • Uuencoding uses a system with base 64 for binary data, but with a very different set of characters in the encoding. It uses many punctuation characters but no lower-case letters.
  • BinHex, which was used within the Mac OS, has an encoding system with 64 as a base but with different characters from Base64. It uses punctuation characters, digits, upper and lower case letters but does not use some visually confusable characters like '7', 'O', 'g' and 'o'.
  • 6PACK, used with some terminal node controllers, encodes 3 raw octets into 4 characters, but with a different set of 64 characters.[15]

See also

References

43 year old Petroleum Engineer Harry from Deep River, usually spends time with hobbies and interests like renting movies, property developers in singapore new condominium and vehicle racing. Constantly enjoys going to destinations like Camino Real de Tierra Adentro.

External links

DTZ's auction group in Singapore auctions all types of residential, workplace and retail properties, retailers, homes, accommodations, boarding houses, industrial buildings and development websites. Auctions are at the moment held as soon as a month.

Whitehaven @ Pasir Panjang – A boutique improvement nicely nestled peacefully in serene Pasir Panjang personal estate presenting a hundred and twenty rare freehold private apartments tastefully designed by the famend Ong & Ong Architect. Only a short drive away from Science Park and NUS Campus, Jade Residences, a recent Freehold condominium which offers high quality lifestyle with wonderful facilities and conveniences proper at its door steps. Its fashionable linear architectural fashion promotes peace and tranquility living nestled within the D19 personal housing enclave. Rising workplace sector leads real estate market efficiency, while prime retail and enterprise park segments moderate and residential sector continues in decline International Market Perspectives - 1st Quarter 2014

There are a lot of websites out there stating to be one of the best seek for propertycondominiumhouse, and likewise some ways to discover a low cost propertycondominiumhouse. Owning a propertycondominiumhouse in Singapore is the dream of virtually all individuals in Singapore, It is likely one of the large choice we make in a lifetime. Even if you happen to're new to Property listing singapore funding, we are right here that will help you in making the best resolution to purchase a propertycondominiumhouse at the least expensive value.

Jun 18 ROCHESTER in MIXED USE IMPROVEMENT $1338000 / 1br - 861ft² - (THE ROCHESTER CLOSE TO NORTH BUONA VISTA RD) pic real property - by broker Jun 18 MIXED USE IMPROVEMENT @ ROCHESTER @ ROCHESTER PK $1880000 / 1br - 1281ft² - (ROCHESTER CLOSE TO NORTH BUONA VISTA) pic real estate - by broker Tue 17 Jun Jun 17 Sunny Artwork Deco Gem Near Seashore-Super Deal!!! $103600 / 2br - 980ft² - (Ventnor) pic actual estate - by owner Jun 17 Freehold semi-d for rent (Jalan Rebana ) $7000000 / 5909ft² - (Jalan Rebana ) actual property - by dealer Jun sixteen Ascent @ 456 in D12 (456 Balestier Highway,Singapore) pic real property - by proprietor Jun 16 RETAIL SHOP AT SIM LIM SQUARE FOR SALE, IT MALL, ROCHOR, BUGIS MRT $2000000 / 506ft² - (ROCHOR, BUGIS MRT) pic real estate - by dealer HDB Scheme Any DBSS BTO

In case you are eligible to purchase landed houses (open solely to Singapore residents) it is without doubt one of the best property investment choices. Landed housing varieties solely a small fraction of available residential property in Singapore, due to shortage of land right here. In the long term it should hold its worth and appreciate as the supply is small. In truth, landed housing costs have risen the most, having doubled within the last eight years or so. However he got here back the following day with two suitcases full of money. Typically we've got to clarify to such folks that there are rules and paperwork in Singapore and you can't just buy a home like that,' she said. For conveyancing matters there shall be a recommendedLondon Regulation agency familiar with Singapore London propertyinvestors to symbolize you

Sales transaction volumes have been expected to hit four,000 units for 2012, close to the mixed EC gross sales volume in 2010 and 2011, in accordance with Savills Singapore. Nevertheless the last quarter was weak. In Q4 2012, sales transactions were 22.8% down q-q to 7,931 units, in line with the URA. The quarterly sales discount was felt throughout the board. When the sale just starts, I am not in a hurry to buy. It's completely different from a private sale open for privileged clients for one day solely. Orchard / Holland (D09-10) House For Sale The Tembusu is a singular large freehold land outdoors the central area. Designed by multiple award-profitable architects Arc Studio Architecture + Urbanism, the event is targeted for launch in mid 2013. Post your Property Condos Close to MRT